前言
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。
alertsconfirmprompt弹出框操作主要方法有:
text:获取文本值
accept():点击“确认”
dismiss():点击“取消”或者叉掉对话框
send_keys():输入文本值--仅限于prompt,在alert和confirm上没有输入框
一、认识alertsconfirmprompt
1.如下图,从上到下依次为alertsconfirmprompt,先认清楚长什么样子,以后遇到了就知道如何操作了
2.html源码如下(有兴趣的可以copy出来,复制到txt文本里,后缀改成html就可以了,然后使用浏览器打开)
<html> <head> <title>Alert</title> </head> <body> <input id = "alert" value = "alert" type = "button" onclick = "alert('很高兴见到你');"/> <input id = "confirm" value = "confirm" type = "button" onclick = "confirm('你想学习html吗?');"/> <input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的爱好:','sleep'); document.write(name) "/> </body> </html>
二、alert、confirm、prompt操作
1.先用switch_to_alert()方法切换到相应的弹出框上
2.可以用text方法获取弹出的文本信息
3.accept()点击确认按钮
4.dismiss()相当于右上角x,取消弹出框
5.弹框上有输入框的,可以使用send_keys()方法输入文本内容
(url的路径,直接复制浏览器打开的路径)
# coding:utf-8 from selenium import webdriver import time driver=webdriver.Chrome() driver.get("file:///C:/Users/Administrator/Desktop/1.html") # driver.find_element_by_id("alert").click() # driver.find_element_by_id("confirm").click() driver.find_element_by_id("prompt").click() time.sleep(3) #切换到弹出框上 r=driver.switch_to.alert #打印框中文本内容 print(r.text) time.sleep(2) #弹出框中有输入框,可以send_keys,否则报错:User dialog does not have a text box input field # r.send_keys("xixi") time.sleep(2) #点击框中的确认按钮 # r.accept() #取消弹出框 r.dismiss()
三、实战演练
百度-设置-搜索设置,保存设置,弹出alert窗口
# coding:utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time browser=webdriver.Chrome() browser.get("https://www.baidu.com") s=browser.find_element_by_id("s-usersetting-top") time.sleep(3) ActionChains(browser).move_to_element(s).perform() browser.find_element_by_link_text("搜索设置").click() time.sleep(3) #每页50条 browser.find_element_by_id("nr_3").click() time.sleep(2) browser.find_element_by_link_text("保存设置").click() a=browser.switch_to.alert a.accept()