news 2026/4/18 10:43:10

selenium自动化之弹窗处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
selenium自动化之弹窗处理

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

1、前言

我们在使用Selenium做Web自动化测试时,页面经常出现弹窗,如果不处理后续的测试脚本就无法正常运行,今天我们就带大家一起来学习如何处理Web页面上的弹窗。

2、Web页面弹窗的分类

弹窗通常有3种:Alert类型弹框、Confirm类型弹框、Prompt类型弹框,这种我们无法通过定位元素来操作。它们的具体特点如下:

  • Alert弹窗:只有信息及确认按钮

  • Confirm弹窗:在Alert弹窗基础上增加了取消按钮

  • Prompt类型弹框:在Confirm的基础上增加了可输入文本内容的功能

3、解决方案

selenium中提供了如下方法来处理弹窗,具体的解决方案如下:

from selenium import webdriver driver = webdriver.Chrome() driver.switch_to.alert.accept() #确定、同意;三种弹窗都可使用 driver.switch_to.alert.dismiss() #取消、不同意;confirm和prompt弹窗中使用 title = driver.switch_to.alert.text #打印弹窗信息 alert = driver.switch_to.alert #获取alert对象 alert.send_keys() #Prompt弹窗中输入内容

有些弹窗并非浏览器的alert 窗口,而是html元素,这种对话框只需要按照常规的定位页面元素进行处理即可

4、实战演练

import unittest from selenium import webdriver from time import sleep class TestAlert(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(5) self.driver.maximize_window() def tearDown(self): self.driver.quit() def test_alert(self): self.driver.get(r'http://sahitest.com/demo/alertTest.htm') self.driver.find_element('name','b1').click() alert = self.driver.switch_to.alert print(alert.text) alert.accept() sleep(2) def test_confirm(self): self.driver.get(r'http://sahitest.com/demo/confirmTest.htm') self.driver.find_element('name','b1').click() alert = self.driver.switch_to.alert print(alert.text) alert.accept() # alert.dismiss() sleep(2) def test_prompt(self): self.driver.get(r'http://sahitest.com/demo/promptTest.htm') self.driver.find_element('name','b1').click() alert = self.driver.switch_to.alert print(alert.text) alert.send_keys("CR77777777777777777") sleep(1) alert.accept() sleep(2) if __name__ == '__main__': unittest.main()

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 23:38:19

【综合能源】含氢气氨气综合能源系统优化调度附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/3/22 17:47:47

手把手带你设计一个Java高并发系统!

设计一个高并发系统并非易事,如果不站在巨人的肩膀上来开展工作的话,这条路是很难保持一路畅通的!所以,本着好东西就是要拿出来分享的原则,LZ就把前段时间从阿里的一位老哥手上捞到的百亿级系统架构设计实录分享给大家…

作者头像 李华
网站建设 2026/3/31 19:13:50

这次带你彻底搞定Java程序员必会的Redis!

大家都知道Redis的业务范围是非常广的,但是对于刚入行的小伙伴来说可能也就知道个缓存跟分布式锁。因为Redis的很多功能在一些小企业里,根本是用不到的,得等到并发量到了一定的程度,系统扛不住了,才会用到Redis那些高级…

作者头像 李华
网站建设 2026/4/16 14:03:35

基于机器学习的企业异常值检测实验报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于机器学习的企业异常值检测实验报告(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码摘要 随着我国经济不断蓬勃发展,非法集资案件涉及范围广、金额大,严重干了正常的经济、金融秩序,使参与…

作者头像 李华
网站建设 2026/4/18 5:54:42

LH Research CM-E3708208 1000W 电源

LH Research CM-E3708208 1000W 电源相关信息 LH Research CM-E3708208 是一款1000W功率的电源模块,通常用于工业、医疗或高端电子设备中。以下是关于该型号的一些关键信息: 主要参数 输入电压范围:85-264VAC输出电压:根据具体…

作者头像 李华
网站建设 2026/4/18 8:45:01

说说 Redis 缓存穿透场景与相应的解决方法

Redis 缓存主要缓存穿透、缓存击穿与缓存雪崩异常场景,今天我们来讲讲缓存穿透。1 场景描述缓存穿透是指客户端请求一个缓存和数据库中都不存在的 key。由于缓存中不存在,所以请求会透过缓存查询数据库;由于数据库中也不存在,所以…

作者头像 李华