首页
技术小册
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自动化测试实战
### Selenium等待条件:掌握17种元素等待条件 在自动化测试领域,尤其是在使用Selenium进行Web自动化测试时,等待机制是不可或缺的一部分。由于网络延迟、页面渲染时间差异、JavaScript执行时间等因素,直接对页面元素进行操作可能会导致测试失败。因此,掌握Selenium中的等待条件变得尤为重要。本章节将深入介绍Selenium提供的17种(实际上,Selenium WebDriver API直接提供的等待条件种类有限,但结合不同策略和方法,我们可以实现多样化的等待逻辑)核心及扩展的等待策略,帮助读者在实际测试中灵活应对各种场景。 #### 一、基础等待机制概览 在深入探讨具体等待条件之前,先了解Selenium中两种主要的等待方式:显式等待(Explicit Wait)和隐式等待(Implicit Wait)。 - **隐式等待**:设置全局等待时间,针对页面上的所有元素,每当尝试查找元素时,如果元素尚未出现,WebDriver将等待指定时间后再继续执行。这种等待方式简单但不够灵活,因为它会影响所有元素查找操作。 - **显式等待**:通过WebDriverWait类配合ExpectedConditions(或自定义条件)来实现,针对特定元素或条件的等待。这种方式更加灵活,可以根据实际需要设置等待条件和超时时间。 #### 二、Selenium WebDriver内置的等待条件 Selenium WebDriver的`ExpectedConditions`类提供了一系列预定义的等待条件,这些是自动化测试中常用的显式等待条件。以下将介绍并解释这些条件及其应用场景。 1. **visibilityOfElementLocated**:等待元素在DOM中可见。适用于元素存在但不可见(如被CSS隐藏)的场景。 2. **visibilityOf**:与`visibilityOfElementLocated`类似,但直接接收一个WebElement对象,用于等待该元素可见。 3. **presenceOfElementLocated**:等待元素出现在DOM中,不关心是否可见。用于确保元素已加载到DOM。 4. **presenceOfAllElementsLocatedBy**:等待所有符合条件的元素出现在DOM中。适用于需要等待一组元素加载完毕的场景。 5. **elementToBeClickable**:等待元素变为可点击状态。这通常意味着元素不仅可见,而且没有被其他元素遮挡。 6. **stalenessOf**:等待指定的元素从DOM中移除或变得不再可访问。这通常用于等待动态内容更新完成。 7. **textToBePresentInElement**:等待元素中包含特定的文本。适用于需要验证元素内容是否已更新的场景。 8. **textToBePresentInElementValue**:等待元素的value属性值中包含特定的文本。常用于输入框、选择框等表单元素。 9. **titleIs**:等待页面标题变为指定文本。用于页面跳转或内容更新后的验证。 10. **titleContains**:等待页面标题包含指定的文本片段。与`titleIs`相比,提供了更灵活的匹配方式。 11. **frameToBeAvailableAndSwitchToIt**:等待并切换到可用的iframe。在处理iframe内的元素时非常有用。 12. **alertIsPresent**:等待页面上出现alert对话框。用于处理JavaScript弹窗。 13. **invisibilityOfElementLocated**:等待元素在DOM中变得不可见。与`visibilityOfElementLocated`相反。 14. **elementToBeSelected**:等待下拉列表中的某个选项被选中。适用于`<select>`元素。 15. **elementSelectionStateToBe**:等待元素的选中状态与期望的相符。比`elementToBeSelected`更灵活,可检查单选按钮、复选框的选中状态。 16. **elementToBeSelectedIndex**:等待下拉列表中的某个选项(通过索引指定)被选中。 17. **numberOfWindowsToBe**:等待窗口数量达到指定值。在处理多窗口、标签页时非常有用。 #### 三、扩展等待条件与自定义等待 除了Selenium WebDriver内置的等待条件外,我们还可以通过自定义等待条件来满足特定需求。自定义等待条件通常通过实现`Function<WebDriver, Boolean>`接口来创建,该接口返回一个布尔值,指示等待条件是否满足。 例如,你可以创建一个自定义等待条件来检查页面上是否存在某个特定的CSS类。或者,检查某个元素的属性值是否符合预期。通过结合JavaScriptExecutor执行JavaScript代码,几乎可以实现对页面状态的任何检查。 #### 四、最佳实践与注意事项 - **避免过度等待**:设置合理的等待时间,避免不必要的长时间等待导致测试效率低下。 - **合理使用隐式等待与显式等待**:隐式等待适用于全局范围的简单等待需求,而显式等待则提供了更精细的控制。 - **优先使用显式等待**:在需要精确控制等待条件时,应优先使用显式等待。 - **自定义等待条件的灵活应用**:根据测试需求,灵活创建自定义等待条件,提高测试的适应性和可靠性。 - **注意页面元素的动态变化**:在动态加载的Web应用中,要特别注意页面元素的变化,适时调整等待条件。 #### 五、总结 掌握Selenium中的等待条件对于编写稳定可靠的自动化测试脚本至关重要。通过合理使用Selenium WebDriver内置的等待条件以及自定义等待条件,我们可以有效地应对Web页面中的各种动态变化,确保测试脚本能够准确地与页面元素进行交互。同时,注意避免过度等待和合理使用不同类型的等待机制,也是提高测试效率和可靠性的关键。希望本章节的内容能够帮助读者更好地理解和应用Selenium中的等待条件,为自动化测试工作带来便利。
上一篇:
Selenium三种等待方式:剖析原理、用法和应用场景
下一篇:
掌握鼠标单击、双击、右击,键盘输入、键盘组合键的应用
该分类下的相关小册推荐:
Python机器学习基础教程(上)
Python合辑6-字典专题
Python3网络爬虫开发实战(下)
Python合辑13-面向对象编程案例(上)
Python合辑5-格式化字符串
Python编程轻松进阶(四)
Python合辑4-130个字符串操作示例
剑指Python(万变不离其宗)
Python合辑3-字符串用法深度总结
Python高性能编程与实战
Python合辑12-面向对象
剑指Python(磨刀不误砍柴工)