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

自动化测试之等待方式

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

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

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

1. 显式等待(Explicit Wait)

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

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

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

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

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

等待步骤:

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

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

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

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

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

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

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

代码实例:

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

2024年Python自动化测试全套保姆级教程,70个项目实战,3天练完,永久白嫖...

2. 隐式等待(Implicit Wait)

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

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

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

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

代码实例:

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

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

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

3. 线程睡眠(Thread.sleep)

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

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

代码实例:

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

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

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

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看。

【2025最新版】字节大牛讲的最全最细的自动化测试全套教程!永久白嫖,拿走不谢,全程干货无废话!逼自己15天内学完,从软件测试基础到项目实战一套全通关!

相关文章:

  • C++14新特性
  • Python基础入门掌握(六)
  • 基于yolo11+flask打造一个精美登录界面和检测系统
  • vue echarts封装使用
  • 知识蒸馏 vs RLHF:目标函数与收敛分析
  • LeetCode 3280 将日期转换为二进制表示
  • linux - 基础IO之操作与文件描述符全解析:从C语言到系统调用底层实现
  • 「自动驾驶的数学交响曲:线性代数、微积分与优化理论的深度共舞」—— 解析人工智能背后的高阶数学工具链
  • 【人工智能】大语言模型学习大纲
  • 小秋的矩阵
  • Python在数据处理中的应用:从入门到精通
  • 大模型AI多智能体系统(Multi-Agent Systems, MAS)技术介绍
  • RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查
  • 蓝桥杯省赛真题C++B组-2024好数
  • golang快速上手基础语法
  • Linux下对2TB磁盘的分区、格式化、挂截目录介绍
  • 0090.基于springboot+vue的海滨体育馆管理系统+论文
  • 排错 -- FISCO BCOS区块链网络 -- 3. 编译智能合约
  • 操作系统-八股
  • 如何利用物理按键控制LVGL控件的大小与状态
  • 河南:响鼓重锤对违规吃喝问题露头就打、反复敲打、人人喊打
  • 美叙领导人25年来首次会面探索关系正常化,特朗普下令解除对叙经济制裁
  • 佩斯科夫:俄方代表团15日将在伊斯坦布尔等候乌克兰代表团
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么
  • 加强战略矿产出口全链条管控将重点开展哪些工作?商务部答问
  • 乌方:泽连斯基只接受与普京会谈,拒见其他俄代表