python3+selenium自动化测试-警告框处理9

(9)警告框处理
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。
在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用switch_to_alert()方法定位到 alert/confim/prompt,然后使用 text/accept/dismiss/send_keys等方法进行操作。
1、text:返回aler/confirm/prompt中的文字信息。
2、accept():接受现有警告框。
3、dismiss():解散现有警告框。
4、send_keys(keysToSend): 发送文本至警告框。keysToSend:将文本发送至警告框。
一、认识alert\confirm\prompt
1.如下图,从上到下依次为alert\confirm\prompt,先认清楚长什么样子,以后遇到了就知道如何操作了。

图片.png

2.html源码如下(有兴趣的可以copy出来,复制到txt文本里,后缀改成html就可以了,然后用浏览器打开)
<html>
<head>
<title>Alert</title>
</head>
<body>
<input id = "alert" value = "alert" type = "button" onclick = "alert('您关注了yoyoketang吗?');"/>
<input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定关注微信公众号:yoyoketang?');"/>
<input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入微信公众号:','yoyoketang'); document.write(name) "/>
</body>
</html>

二、alert操作
1.先用switch_to_alert()方法切换到alert弹出框上
2.可以用text方法获取弹出的文本 信息
3.accept()点击确认按钮
4.dismiss()相当于点右上角x,取消弹出框
(url的路径,直接复制浏览器打开的路径)

三、confirm操作
1.先用switch_to_alert()方法切换到alert弹出框上
2.可以用text方法获取弹出的文本 信息
3.accept()点击确认按钮
4.dismiss()相当于点取消按钮或点右上角x,取消弹出框
(url的路径,直接复制浏览器打开的路径)

四、prompt操作
1.先用switch_to_alert()方法切换到alert弹出框上
2.可以用text方法获取弹出的文本 信息
3.accept()点击确认按钮
4.dismiss()相当于点右上角x,取消弹出框
5.send_keys()这里多个输入框,可以用send_keys()方法输入文本内容
(url的路径,直接复制浏览器打开的路径)​

五、select遇到的坑
1.在操作百度设置里面,点击“保存设置”按钮时,alert弹出框没有弹出来。(Ie浏览器是可以的)
2.分析原因:经过慢慢调试后发现,在点击"保存设置"按钮时,由于前面的select操作后,失去了焦点
3.解决办法:在select操作后,做个click()点击操作

s = driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示20条")
time.sleep(3)
s.click()

代码参考如下:

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time


# driver = webdriver.Firefox()
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)

# 鼠标移动到“设置”按钮
# mouse = driver.find_element_by_link_text("设置")
mouse = driver.find_element_by_css_selector("#s-usersetting-top")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()

# 通过text:select_by_visible_text() 下拉框,通过匹配到的可见字符
# s = driver.find_element_by_id("nr")
# Select(s).select_by_visible_text("每页显示20条")
s = driver.find_element_by_id("nr_2").is_selected()
print(s)  
driver.find_element_by_id("nr_2").click() # 勾选上20条
r = driver.find_element_by_id("nr_2").is_selected()
print(r)

time.sleep(3)
driver.find_element_by_link_text("保存设置").click()
time.sleep(5)

# 获取alert弹框
t = driver.switch_to_alert()
print(t.text)
t.accept()  # 点击确认按钮

time.sleep(5)
driver.quit()

参考链接
https://www.cnblogs.com/yoyoketang/p/6128648.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容