news 2026/4/3 5:16:31

自动化测试之等待方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动化测试之等待方式

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

在自动化测试中,等待是一个重要的技术,用于处理页面加载、元素定位、元素状态改变等延迟问题。

等待能够确保在条件满足后再进行后续操作,提高自动化测试的稳定性以及可靠性。

等待方式:显示等待、隐式等待、线程睡眠

1. 显式等待(Explicit Wait)

一种在自动化测试中使用的等待方式,它的特点是在代码中明确地指定一个特定的条件,等待直到条件满足后再继续执行后续代码。

显式等待通常用于等待特定的条件发生,比如等待元素可见、可点击、存在等。

通过显示等待,可以解决页面加载或元素定位的延迟问题,确保在条件满足后再进行后续操作,避免不必要的等待时间。

在使用显示等待时,需要结合Selenium的WebDriverWait和expected_conditions模块来实现。

WebDriverWait负责等待的设置,expected_conditions模块提供了一系列常用的条件,可以根据具体的需求选择合适的条件。

等待步骤:

1)初始化WebDriverWait对象,指定等待时间和浏览器驱动。

2)调用until方法,传入要等待的条件。

3)在until方法中,会不断地轮询条件是否满足,直到条件满足或超时时间到达。

4)如果条件满足,继续执行后续代码。

5)如果超过超时时间后仍未满足条件,则抛出TimeoutException异常。

在每次轮询中,显示等待会等待一小段时间,然后再次检查条件是否满足。

这个小段时间是通过指定的等待时间和轮询间隔来控制的,条件满足,则立即继续执行后续代码;如果条件不满足,则继续等待。

代码实例:

2. 隐式等待(Implicit Wait)

自动化测试中使用的等待方式,特点是在代码中设置一个等待时间,如果在指定的时间内找到了元素,则继续执行后续代码。超过了指定的时间仍未找到元素,则抛出异常。

在设置隐式等待后,在代码中使用了元素定位的方法,如find_element_by_xpath、find_element_by_id等,会在指定的等待时间内等待元素出现。

在执行每个元素定位操作之前,先等待一段时间,等待的时间由设置的等待时间决定。

这个等待时间是一个全局性的设置,对整个代码执行过程中的所有元素定位都生效。

代码实例:

隐式等待可能会导致等待时间过长或过短的情况,设置的等待时间过长,则会增加测试时间。

设置的等待时间过短,会导致找不到元素而抛出异常。

在使用隐式等待时需要根据具体的需求和网页加载速度来合理设置等待时间。

3. 线程睡眠(Thread.sleep)

在代码中使用Thread.sleep()方法,暂停执行一段时间。

这种等待方式是固定的,不管条件是否满足都会等待指定的时间。

代码实例:

线程睡眠可以实现等待的效果,但不太推荐在自动化测试中大量使用它,因为线程睡眠是一个固定的等待时间,无法灵活地根据条件来进行等待。

如果条件提前满足,线程仍然会暂停执行指定的时间,导致测试效率低下和不稳定。

相比于线程睡眠,使用显示等待或隐式等待等更灵活的等待方式更加推荐。

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

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

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

结合Kibana发挥es数据库日志分析最大效能:操作指南

用 Kibana 挖掘 Elasticsearch 日志的真正价值:从配置到实战的一站式指南你有没有过这样的经历?线上服务突然告警,CPU飙高、接口超时,你一头扎进服务器日志里翻找线索,却在成千上万行文本中迷失方向。等终于定位问题&a…

作者头像 李华
网站建设 2026/3/19 8:59:48

一文说清Keil5 Debug调试怎么使用于工控通信协议

深入工控通信调试:用Keil5玩转Modbus、CANopen等协议的精准排错在工业自动化现场,一个看似简单的通信故障,可能让整条产线停摆。你有没有遇到过这样的场景:设备偶尔“失联”,Modbus帧莫名其妙被丢弃;或者CA…

作者头像 李华
网站建设 2026/3/30 22:41:04

一文说清电路仿真circuits网页版中的反馈电路原理

从零搞懂反馈电路:用网页仿真玩转负反馈与正反馈 你有没有试过搭一个放大电路,结果输出不是信号被削了顶,就是莫名其妙地“自己振起来”?又或者想做个方波发生器,可电路死活不起振? 这些问题的根源&#…

作者头像 李华
网站建设 2026/3/26 7:56:00

基于SSM的智慧养老云服务平台

一、系统概述 基于 SSM(Spring、Spring MVC、MyBatis)框架构建的智慧养老云服务平台,整合云计算、物联网、大数据等技术,为养老机构、社区和居家老人提供全方位、智能化的养老服务解决方案。平台实现了老人信息管理、健康监测、服…

作者头像 李华
网站建设 2026/4/1 3:00:50

基于SSM的高校资源管理系统设计与实现

一、系统简介 基于 SSM(Spring、Spring MVC、MyBatis)框架的高校资源管理系统,旨在整合高校内各类资源,实现资源的高效调配、合理利用与科学管理。通过该系统,能够有效解决高校在教学资源、科研资源、后勤资源等管理过…

作者头像 李华
网站建设 2026/4/1 20:00:45

快速理解SSD1306初始化流程在穿戴设备启动阶段的作用

按下按钮0.1秒内亮屏?揭秘SSD1306初始化如何让穿戴设备“秒响应”你有没有这样的体验:按下智能手环的唤醒键,等了半秒才看到时间显示——那一刻,哪怕只慢了一瞬,也会觉得这设备“不够聪明”。可你知道吗?这…

作者头像 李华