标签:web driver al alert switch 弹出 Alert 弹窗
1.弹出框的类型:
- 弹出框是
div
层,这种跟平常定位方法一样 - 弹出框是嵌套的
iframe
层,这种切换iframe
就可以了 - 弹出框是嵌入的一个窗口,切换新窗口
- 弹出框是
Windows
对象的方法,window.alert
2.解决弹出框是嵌入的一个窗口
(1)打印获取全部的窗口,有两个handle
(2)切换新的窗口
(3)用平常的定位方法即可
# 打印所有的handle
all_handles = driver.window_handles
print(all_handles)
# 切换到新的handle上
driver.switch_to.window(all_handles[1])
3.解决弹出框是Windows
对象的方法
HTML DOM alert()
方法
要想了解alert
,先来了解一下【HTML DOM Window
对象】。Window
对象表示浏览器中打开的窗口。如果文档包含框架(frame
或 iframe
标签),浏览器会为 HTML 文档创建一个 window
对象,并为每个框架创建一个额外的 window
对象。alert()
是Window
对象的一个方法。
alert
不是页面元素,是javascript
的一个控件,所以不能右键检查,不能用传统的方式定位
附:关于js
三种弹出框的介绍:https://blog.csdn.net/qq_33247435/article/details/85626051
alert
常用方法
switch_to.alert # 切换到alert弹窗
text # 获取弹出框文本
accept() # 确定
dismiss() #取消
send_keys() # 输入
模拟操作alert
步骤如下:
点击某按钮弹出alert
–>切换到alert
–>操作alert
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get(r"D:\py\studytest\Auto\po_selenium\test1.html")
# # 触发对话框:只能确认的警告弹窗
# driver.find_element_by_id("duihua").click() # 点击按钮,弹出alert弹窗
# al = driver.switch_to.alert
# time.sleep(3)
# al.accept() # 确认对话框
# 触发确认框:可以取消可以确认的弹窗
# driver.find_element_by_id("quereng").click() # 点击按钮,弹出alert弹窗
# al = driver.switch_to.alert
# #al.accept() # 确认对话框
# #driver.find_element_by_id("quereng").click()
# time.sleep(2)
# al.dismiss() # 取消对话框
# 触发提示框:可以输入内容的警告弹窗
driver.find_element_by_id("tishi").click() # 点击按钮,弹出alert弹窗
al = driver.switch_to.alert
time.sleep(2)
#这里需要注意,内容可以输入进去,但是看不到输入现象
al.send_keys("好的,我知道了") #发送文本到警告弹窗
al.accept() # 确认对话框
time.sleep(2)
driver.quit()
另,等待弹出框的两种方法:
(1)处理弹出框时,隐式等待是不起作用的。因为隐式等待判断的是页面加载,而此处点击确认按钮,只有弹窗没有页面加载,所以不起作用,需要用以下:
time.sleep()
driver.switch_to.alert.accept()
(2)添加浏览器等待,也可以处理弹出框
#智能等待之显示等待,浏览器等待
WebDriverWait(driver,30,1).until(expected_conditions.alert_is_present())
等待30秒,隔1秒检查一次.直到期望的条件--弹出框存在
#点击确定
driver.switch_to.alert.accept()
标签:web,driver,al,alert,switch,弹出,Alert,弹窗 来源: https://blog.csdn.net/weixin_39773337/article/details/116068377
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。