首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
聊聊Web自动化测试:黑盒、白盒、α测试、β测试、冒烟测试、回归测试
Selenium三剑客:WebDriver、IDE、Grid一网打尽
Selenium开发环境搭建
下载安装浏览器驱动:教你解决最麻烦的版本匹配问题
第一个Selenium测试:Selenium测试流程、源码分析
实现元素定位:掌握Selenium八大定位方法
通过打车生活案例,深入剖析WebDriver运行原理
掌握WebDriver核心方法和属性的使用
掌握WebElement核心方法和属性的使用
form表单:熟练掌握form表单操作步骤
掌握checkbox和radiobutton的定位技巧
下拉列表:熟练使用Select类,来实现下拉列表定位
弹框处理:掌握alert、confirm、prompt三种弹出的用法
Selenium三种等待方式:剖析原理、用法和应用场景
Selenium等待条件:掌握17种元素等待条件
掌握鼠标单击、双击、右击,键盘输入、键盘组合键的应用
熟练执行JavaScript的方法和技巧,掌握JavaScript操作滚动条
Selenium屏幕截图:实现屏幕截屏、按照日期时间格式保存图片
掌握frame、iframe定位,熟练frame的切入和切出
下载安装Selenium IDE:下载安装Chrome、Firefox插件IDE
熟练Selenium IDE菜单栏、工具类、命令窗口的使用
Selenium IDE实现录制和回放及脚本导出
项目环境搭建:安装JDK、MySQL、Tomcat和测试系统
需求分析和用例设计:深度挖掘需求,掌握测试用例设计范式
项目架构设计:掌握分层设计思想,合理设计目录和包结构
解决验证码问题-方案一:使用pytesseract和Pillow实现验证码识别
解决验证码问题-方案二:通过第三方AI库识别验证码
实现工具类:设计获得验证码、随机字符串生成、cookie操作工具类
完成用户注册测试用例:解决验证码、等待弹框等复杂内容
完成用户登录测试用例:实现登录成功和失败测试
完成管理员登录测试用例:完成验证码正确和错误测试用例
完成文章分类测试用例:解决测试用例依赖问题
完成添加、删除文章测试用例
unittest简介:测试用例、测试套件、测试运行器、测试加载器
unittest中的方法:掌握各种setup、teardown和断言方法
测试用例、测试套件和测试加载器:掌握加载测试用例的四种方法
使用unittest重构测试用例:掌握使用unittest模块的方法和技巧
为项目添加测试报告:使用第三方模块实现测试报告
pytest框架简介:pytest安装、用例编写规则、执行用例
pytest标记:查找测试策略、标记测试函数
pytest参数化处理:使用参数化装饰器、解析列表、元组、字典等数据
pytest Fixture:使用fixture实现用例之间的调用
pytest setup 和 teardown
pytest allure生成测试报告
使用pytest重构项目:实现用例依赖、测试报告、数据参数化
logging模块简介:日志的作用、等级和常用函数
logging日志格式输出:日志发生的时间、文件、模块、行号等信息格式输出
logging模块四大组件:Logger、Handler、Formatter、Filter的用法
为项目添加日志:将日志应用到项目
使用csv模块读取CSV文件,使用pytest参数化实现DDT
使用json模块读取json文件,使用pytest参数化实现DDT
使用xlrd模块读取excel文件,使用pytest参数化实现DDT
Selenium读取数据库数据:将数据保存到数据库,实现数据驱动的测试
Selenium DDT:使用DDT模块实现数据驱动的测试
使用DDT思想重构项目:使用数据库保存数据,将数据驱动思想应用到项目
POM设计模式简介:理解页面-对象-模型设计模式,实现代码的松耦合
设计BasePage类:设计基类,提高项目的代码重用性
设计项目页面对应的PO类:使用POM设计模式设计PO类
设计项目测试用例:将POM设计模式应用到项目
Selenium Grid下载安装:配置Java运行环境,下载安装Selenium Grid
Selenium注册node节点
使用Selenium执行远程测试
Jenkins环境搭建:下载安装Jenkins
在Jenkins中运行项目
邮件通知:实现邮件通知功能
定时运行项目,实现真正的自动化测试
当前位置:
首页>>
技术小册>>
Selenium自动化测试实战
小册名称:Selenium自动化测试实战
### 弹框处理:掌握alert、confirm、prompt三种弹出的用法 在Web自动化测试中,经常会遇到各种类型的弹框(对话框),如警告框(alert)、确认框(confirm)和提示框(prompt)。这些弹框由JavaScript生成,用于与用户进行交互,如显示信息、请求确认或获取用户输入。在Selenium自动化测试中,正确处理这些弹框是确保测试脚本稳定运行的关键一环。本章将深入介绍如何在Selenium中处理这三种常见的弹框类型。 #### 一、alert弹框处理 ##### 1.1 alert弹框简介 Alert弹框是最简单的对话框类型,用于向用户显示一些信息,但不需要用户输入任何内容,也没有取消按钮,只有一个“确定”按钮来关闭对话框。在Selenium中,处理alert弹框主要通过`Alert`接口实现。 ##### 1.2 处理alert弹框的步骤 1. **触发alert弹框**:首先,需要通过某种方式(如点击某个按钮)触发alert弹框的显示。 2. **切换到alert弹框**:在Selenium中,一旦alert弹框出现,WebDriver将无法直接操作页面上的其他元素,直到该弹框被处理。因此,需要通过`Alert`接口切换到alert弹框上。 3. **处理alert弹框**:通常的处理方式是读取alert弹框中的文本信息,并调用`accept()`方法关闭弹框。 4. **切换回主文档**:处理完alert弹框后,需要切换回主文档(即原来的Web页面),以便继续后续的测试操作。 ##### 1.3 示例代码 ```java // 假设某个按钮点击后会触发alert弹框 WebElement button = driver.findElement(By.id("alertButton")); button.click(); // 切换到alert弹框 Alert alert = driver.switchTo().alert(); // 读取alert弹框中的文本 String alertText = alert.getText(); System.out.println("Alert Text: " + alertText); // 关闭alert弹框 alert.accept(); // 切换回主文档(通常这一步是隐式的,因为alert关闭后自动回到主文档) ``` #### 二、confirm弹框处理 ##### 2.1 confirm弹框简介 Confirm弹框比alert弹框多一个“取消”按钮,用于让用户选择是否确认某个操作。根据用户的选择(确认或取消),可以执行不同的逻辑。 ##### 2.2 处理confirm弹框的步骤 处理confirm弹框的步骤与alert类似,但多了根据用户选择执行不同操作的步骤。 1. **触发confirm弹框**。 2. **切换到confirm弹框**。 3. **根据需求处理弹框**:使用`accept()`方法确认操作,或使用`dismiss()`方法取消操作。 4. **切换回主文档**。 ##### 2.3 示例代码 ```java // 假设某个按钮点击后会触发confirm弹框 WebElement button = driver.findElement(By.id("confirmButton")); button.click(); // 切换到confirm弹框 Alert confirm = driver.switchTo().alert(); // 根据情况处理confirm弹框 // 例如,我们总是选择确认 confirm.accept(); // 或者选择取消 // confirm.dismiss(); // 切换回主文档 ``` #### 三、prompt弹框处理 ##### 3.1 prompt弹框简介 Prompt弹框除了包含“确认”和“取消”按钮外,还有一个输入框,用于获取用户的输入。根据用户的输入内容和选择的操作(确认或取消),可以执行相应的逻辑。 ##### 3.2 处理prompt弹框的步骤 处理prompt弹框的步骤更加复杂,因为需要处理用户的输入。 1. **触发prompt弹框**。 2. **切换到prompt弹框**。 3. **输入文本**:使用`sendKeys()`方法在输入框中输入文本。 4. **根据需求处理弹框**:使用`accept()`方法确认操作(此时会采用输入框中的文本),或使用`dismiss()`方法取消操作。 5. **切换回主文档**。 ##### 3.3 示例代码 ```java // 假设某个按钮点击后会触发prompt弹框 WebElement button = driver.findElement(By.id("promptButton")); button.click(); // 切换到prompt弹框 Alert prompt = driver.switchTo().alert(); // 在prompt弹框的输入框中输入文本 prompt.sendKeys("Hello, Selenium!"); // 确认操作 prompt.accept(); // 切换回主文档 ``` #### 四、注意事项与最佳实践 1. **确保弹框已触发**:在执行弹框处理代码之前,确保弹框已经被触发并显示在屏幕上。 2. **异常处理**:在尝试切换到弹框或处理弹框时,应加入异常处理逻辑,以应对弹框未出现或处理失败的情况。 3. **等待机制**:在某些情况下,弹框的显示可能会有延迟。可以使用Selenium的显式等待(Explicit Wait)或隐式等待(Implicit Wait)来确保弹框已完全显示后再进行处理。 4. **避免硬编码**:尽量避免在测试脚本中硬编码弹框的文本内容或按钮标识,而是通过页面元素定位来获取这些信息,以提高脚本的可维护性和复用性。 5. **跨浏览器兼容性**:不同浏览器在处理弹框时可能存在细微差别,建议在多种浏览器上测试弹框处理逻辑,以确保兼容性。 通过本章的学习,您应该能够熟练掌握Selenium中处理alert、confirm、prompt三种弹出对话框的方法,并在自动化测试中灵活运用这些技巧来确保测试的顺利进行。
上一篇:
下拉列表:熟练使用Select类,来实现下拉列表定位
下一篇:
Selenium三种等待方式:剖析原理、用法和应用场景
该分类下的相关小册推荐:
Python高并发编程与实战
Python与办公-玩转Word
Python与办公-玩转Excel
剑指Python(万变不离其宗)
Python神经网络入门与实践
Python合辑10-函数
Python面试指南
Python合辑11-闭包函数
Python合辑13-面向对象编程案例(上)
Python3网络爬虫开发实战(上)
Python合辑9-判断和循环
机器学习算法原理与实战