自动化测试:等待方式

news2024/10/25 16:40:35

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

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

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

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()方法,暂停执行一段时间。

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

代码实例:

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

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

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

 

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】OpenCV—WaterShed Algorithm(1)

文章目录 1、功能描述2、代码实现3、完整代码4、效果展示5、涉及到的库函数5.1、cv2.pyrMeanShiftFiltering5.2、cv2.morphologyEx5.3、cv2.distanceTransform5.4、cv2.normalize5.5、cv2.watershed 6、参考 1、功能描述 基于分水岭算法对图片进行分割 分水岭分割算法&#x…

什么是域名?什么是泛域名?

域名 定义 域名是互联网上用于识别和定位网站或网络服务的名称。它是由一串用点分隔的字符组成,例如 “baidu.com”。就像是现实生活中建筑物的地址,方便用户在互联网的海量信息中找到特定的网站。 结构 域名从右到左依次为顶级域名(TLD&…

go语言中的Scan()和Scanln()输入函数

Scan()输入函数 package mainimport "fmt"func main() {var a intvar b stringfor {fmt.Println("请输入一个整数和一个字符串(用空格分隔):")fmt.Scan(&a, &b) // 直接读取输入到变量中fmt.Println("整数…

图书管理系统的简单实现

文章目录 图书系统逻辑分析各种操作功能的实现完整代码 个人主页 JavaSE专栏 图书系统逻辑分析 该程序设置有三个包,user 包,book 包,operation包。 book包中包含对于书的一些信息和操作;operation包中包含有对 书 的所有操作功能;user包中包…

‘perl‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

‘perl’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 明明已经根据教程安装了perl环境,但是在cmd中依赖报该错误,本章教程提供解决办法。 一、激活perl环境 state shell ActiveState-Perl-5.36.0此时输入perl -v 是可以直接输出perl版本号的。 二、找到perl的执…

想进体制内?到底有哪些路可走?原来有这么多方法

在如今的就业大环境下,体制内工作越来越受到大家的青睐。那么,体制内为何如此受欢迎呢? 一、体制内为何备受青睐 体制内工作首先给人一种强烈的稳定感和安全感。一旦进入体制,你不用时刻担心失业的风险,能够拥有一份长…

安康旅游网站:SpringBoot设计与实现详解

目 录 目 录 I 摘 要 III Abstract IV 第一章 绪论 1 1.1 研究现状 1 1.2 设计原则 1 1.3 研究内容 2 第二章 相关技术简介 1 2.1 JSP技术 1 2.2 Java技术 2 2.3 MYSQL数据库 2 2.4 B/S结构 3 2.5 Spring Boot框架 4 第三章 系统分析 5 3.1可行性分析 5 3.1.1技术可行性 5 3.1.…

阿里云项目启动OOM问题解决

问题描述 随着项目业务的增长,系统启动时内存紧张,每次第一次启动的时候就会出现oom第二次或者第n的时候,就启动成功了。 带着这个疑问,我就在阿里云上提交了工单,咨询为什么第一次提交失败但是后面却能提交成功尼&a…

开挖 Domain - 前奏

WPF App 主机配置 Microsot.Extension.Hosting 一键启动(配置文件、依赖注入,日志) // App.xaml.cs 中定义 IHost private readonly IHost _host Host.CreateDefaultBuilder().ConfigureAppConfiguration(c > {_ c.SetBasePath(Envi…

基于NERF技术重建学习笔记

NeRF(Neural Radiance Fields)是一种用于3D场景重建的神经网络模型,能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数,利用了体积渲染和神经网络的结合,通过学习光线穿过空间时的颜色和密度来重建场…

邮件营销的目的详解:促进销售与业绩增长!

邮件营销的目的效果评估?发不同类型营销邮件的目的? 邮件营销作为一种高效且成本低廉的营销手段,被广泛应用于各行各业。邮件营销的目的不仅仅是简单的信息传递,更是为了促进销售与业绩增长。MailBing将深入探讨邮件营销的目的&a…

01 springboot-整合日志(logback-config.xml)

logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件,通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。 Logback 提供了丰富的配置选项,可以满足各种不同的日志需求。需要根据具体情况进行配置。 项目创建&#xff0…

SWOT分析法:企业决策的全方位视角

SWOT分析是商业领域中广泛采用的一种战略规划工具,它通过评估企业的优势(Strengths)、劣势(Weaknesses)、机会(Opportunities)和威胁(Threats)四个关键维度,帮…

[数据集][目标检测]电力场景输电线路巡检检测数据集VOC+YOLO格式8667张50类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8667 标注数量(xml文件个数):8667 标注数量(txt文件个数):8667 标注…

如何迁移 GitLab 服务器:完整指南

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

Kaggle竞赛——灾难推文分类(Disaster Tweets)

目录 1. 准备工作2. 资源导入3. 数据处理4. 绘制词云图5. 数据可视化5.1 词数和字符数可视化5.2 元特征可视化5.3 类别可视化 6. 词元分析6.1 一元语法统计6.2 多元语法统计 7. 命名实体识别8. 推文主题提取9. 构建模型9.1 数据划分与封装9.2 模型训练与验证 10. 模型评估11. 测…

LinkedList和链表之刷题课(下)

1. 给定x根据x把链表分割,大的结点放在x后面,小的结点放在x前面 题目解析: 注意此时的pHead就是head(头节点的意思) 基本上就是给定一个链表,我们根据x的值来把这个链表分成俩部分,大的那部分放在x后面,小的那部分放在x前面,并且我们不能改变链表本来的顺序,比如下面的链表,我…

精益思维在新能源汽车研发中的应用体现

近年来,新能源汽车作为绿色出行的重要载体,其研发与生产模式正经历着深刻的变革。精益思维,这一源自制造业的管理理念,正逐步渗透并深刻影响着新能源汽车的研发过程,不仅提升了产品质量与生产效率,还促进了…

CV2通过一组轮廓点扣取图片

代码如下: import cv2 import numpy as np# 读取原始图像 original_image cv2.imread(img.png)# 定义一组轮廓点(这里只是示例,你需要根据实际情况替换) points np.array([[50, 100], [100, 200], [200, 150], [200, 50], [160…

论文引用收录证明有什么用?

论文收录引用证明通常用于申请学位、职称评定、科研项目申请等需要证明研究成果的场合,当科研工作者需要查询其学术论文在指定数据库中的被收录和被引用情况时,可以委托一级科技查新咨询单位进行检索,并出具加盖公章的检索证明,以…