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

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()

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

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

http://www.cnnetsun.cn/news/8791.html

相关文章:

  • 基于Hadoop的游戏在线时长大数据分析系统毕业设计项目源码
  • 《智能座舱时代:车载HMI渲染引擎的选型、架构与实践》第 1 章 车载座舱对渲染的特殊要求
  • WiFi 定位的基本原理与技术
  • 测试自动化框架设计与最佳实践:构建高效测试体系的路径
  • 【高并发场景下的秘密武器】:ASP.NET Core 9 WebSocket压缩协议实战落地
  • RAG实践指南:一文搞定大模型RAG过程
  • 一份全面的AI_Agent知识地图
  • 软件、硬件的兼容性的测试,你知多少?
  • 【翻译】【SOMEIP-SD】Page37 - Page39
  • Raft算法(二)
  • 一文讲透大模型应用开发:新时代技术核心竞争力人人都能掌握!
  • 创维E900V21E/E900V21C/E900V21D/E900V22E_S905L3B_安卓9.0_当贝桌面线刷固件包
  • AI如何读懂语义?从One-hot到Embedding,揭秘文字概念理解技术演进!
  • Debye-Wolf积分计算器
  • 为啥网站跳转重定向是307 而不是 301 呢?
  • Zabbix监控模板实战指南:从零构建企业级监控体系
  • RulersGuides.js:网页设计中的Photoshop式标尺与辅助线终极指南
  • 如何快速掌握MagicEdit:高保真视频编辑的终极指南
  • 基于STM32的辅助病床智慧监护系统设计(有完整资料)
  • AI音频分离技术深度解析:Ultimate Vocal Remover的多轨处理革命
  • 5大理由告诉你为什么Bookworm是Linux用户必备的电子书阅读器
  • UDP通信
  • 如何快速制作专业有声书:abogen开源工具的完整指南
  • Matlab 基于光流场的交通流量分析与应用
  • 如何运用Transformer架构实现高效图像生成
  • 阿里自研Wan2.2-T2V-A14B模型深度解析:文本到视频的革命性突破
  • MySQL从入门到精通系列保姆级教程,带你嗨翻天
  • 5个移动端推荐引擎性能瓶颈及突破方案
  • 复杂网络与模糊逻辑粒子群优化毕业论文【附代码】
  • 【毕业设计】基于springboot高校工作室管理系统高等教育机构的工作室管理(源码+文档+远程调试,全bao定制等)