当前位置: 首页 > java >正文

学习Python中Selenium模块的基本用法(11:弹窗处理)

  网页中常用的弹窗包括警告框、提示框、确认框等类型(这三种弹窗的详细介绍见参考文献7),使用Selenium模块处理弹窗的话,首先要能找到弹窗,然后再获取弹窗信息或处理弹窗。
网页中的弹窗,要么是在页面加载后或者其它触发条件下自动弹出,要么是点击按钮或链接时弹出,可以调用switch_to.alert函数获取弹窗对象,主要包括以下2种方式:
1)通过第三方定时库,如果是页面加载后自动弹窗,则使用time.sleep函数等待数秒后调用switch_to.alert函数获取弹窗对象,如果是点击按钮或链接后弹窗,则页面加载后找到按钮或链接元素,模拟点击操作弹窗,然后调用switch_to.alert函数获取弹窗对象;
2)调用Selenium模块的显式等待功能等待弹窗并获取弹窗对象,由于还没有学习Selenium模块的等待功能用法,本文采用第一种方式获取弹窗对象。

  弹窗对象相关的属性和函数如下表所示:

序号名称说明
1text属性,获取弹窗文本
2accept函数,模拟点击确定按钮
3dismiss函数,模拟点击取消按钮
4send_keys函数,向提示框的输入框输入文本

  Selenium官网帮助文档的警告框页面(参考文献8)包括上述三类弹窗,本文基于该页面验证Selenium模块的弹窗处理方式。
首先是警告框,如下面代码所示,通过链接文本找到弹窗链接,点击链接弹窗后等待几秒再获取弹窗对象,最后模拟点击确定按钮关闭弹窗。

driver = webdriver.Chrome()
driver.get("https://www.selenium.dev/zh-cn/documentation/webdriver/interactions/alerts/")time.sleep(5)element = driver.find_element(By.LINK_TEXT, "查看样例警告框")
element.click()time.sleep(3)alert = driver.switch_to.alert
print("弹窗内容:"+alert.text)
alert.accept()

  接着是确认框,如下面代码所示,通过链接文本找到弹窗链接,点击链接弹窗后等待几秒再获取弹窗对象,最后模拟点击取消按钮关闭弹窗。

driver = webdriver.Chrome()
driver.get("https://www.selenium.dev/zh-cn/documentation/webdriver/interactions/alerts/")time.sleep(5)element = driver.find_element(By.LINK_TEXT, "查看样例确认框")
element.click()time.sleep(3)alert = driver.switch_to.alert
print("弹窗内容:"+alert.text)
alert.dismiss ()

  最后是提示框,如下面代码所示,通过链接文本找到弹窗链接,点击链接弹窗后等待几秒再获取弹窗对象,发送测试文本,最后模拟点击确定按钮关闭弹窗。

driver = webdriver.Chrome()
driver.get("https://www.selenium.dev/zh-cn/documentation/webdriver/interactions/alerts/")time.sleep(5)element = driver.find_element(By.LINK_TEXT, "查看样例提示框")
element.click()time.sleep(3)alert = driver.switch_to.alert
alert.send_keys("Hello World!")
print("弹窗内容:"+alert.text)time.sleep(3)alert.accept()

参考文献:
[1]https://www.selenium.dev/zh-cn/
[2]https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/
[3]https://blog.csdn.net/kk_lzvvkpj/article/details/148610502
[4]https://registry.npmmirror.com/binary.html?path=chromedriver/
[5]https://chromedriver.chromium.org/
[6]https://blog.csdn.net/bbppooi/article/details/146242954
[7]https://blog.p2hp.com/archives/9158
[8]https://www.selenium.dev/zh-cn/documentation/webdriver/interactions/alerts/

http://www.xdnf.cn/news/19293.html

相关文章:

  • Day18_【机器学习—交叉验证与网格搜索】
  • 【ROS2】ROS2 基础学习教程 、movelt学习
  • PostgreSQL 数据库灾备要点与举例说明**
  • Spring Data Redis 的使用方法
  • 电子战:多功能雷达工作模式识别
  • [光学原理与应用-339]:ZEMAX - Spot Diagram(点列图)是评估光学系统成像质量的核心工具,它通过几何光线追迹直观展示像差对成像的影响。
  • 模拟实现STL中的list容器
  • 行内元素块元素
  • Coze源码分析-API授权-添加新令牌-后端源码
  • mysql权限user表赋权操作修改
  • 【大语言模型 30】指令微调数据工程:高质量数据集构建
  • 计算机算术7-浮点基础知识
  • 面试tips--MyBatis--<where> where 1=1 的区别
  • Burgan Bank Türkiye 如何借助 Elastic 改造可观测性和安全性
  • 【LeetCode 热题 100】62. 不同路径——(解法四)组合数学
  • Scikit-learn Python机器学习 - Scikit-learn加载数据集
  • 49.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--Refit跨服务调用
  • Photoshop - Ps Camera Raw 滤镜
  • 爱普生L3255打印机故障记录
  • 算法(②排序算法)
  • 在word以及latex中引用zotero中的参考文献
  • JVM架构图是怎样的?
  • Python - 机器学习:从 “教电脑认东西” 到 “让机器自己学规律”
  • 第7.5节:awk语言 switch 语句
  • Kubernetes 部署与发布完全指南:从 Pod 到高级发布策略
  • Ruoyi-vue-plus-5.x第一篇Sa-Token权限认证体系深度解析:1.3 权限控制与注解使用
  • Python爬虫实战:构建Widgets 小组件数据采集和分析系统
  • c++--线程休眠/sleep
  • springboot提前注册bean
  • react组件