一定要会用selenium的等待,3种等待方式解读

如题所述

很多人在使用 Selenium 时遇到过定位不到元素的问题,比如下拉框或弹出框。问题往往出在代码执行速度与浏览器加载速度之间的不匹配。想象一下闪电侠和凹凸曼一起打怪兽的场景:闪电侠动作迅速,而凹凸曼的加载速度较慢。当闪电侠完成任务后,发现凹凸曼还未准备好,他可能会等待,直到凹凸曼完成加载。

那么如何处理这种差异呢?答案是等待。在 Selenium 中,有三种等待方法可以帮助解决元素定位问题:

1. 强制等待:使用 sleep 函数强制程序暂停指定时间,不考虑浏览器加载状态。这种方式简单直接,但过于死板,会影响代码执行效率。示例代码如下:

2. 隐性等待:设置最长等待时间,期间浏览器加载过程中的任何操作都将等待此时间,直到元素加载完成或超时。这种方式让代码更加灵活,但可能等待整个页面加载完成,即使某些元素已加载。示例代码如下:

3. 显性等待:利用 WebDriverWait 类配合 until() 和 until_not() 方法,根据条件灵活等待元素加载。代码示例说明了如何设置隐性等待和显性等待,以及如何使用 WebDriverWait 和 expected_conditions 模块。正确用法应为传递可调用对象作为条件。

expected_conditions 模块提供了多种判断条件,如验证页面标题、元素是否存在、元素可见性、文本匹配、元素可点击性、元素被选中状态等。

实践中,隐性等待通常在代码中作为默认设置,而显性等待在特定情况下使用,以应对特定的等待需求。

若需要加入技术交流和资源共享,可以加入自动化测试交流群。群内分享了视频教程和技术文档,并与同行交流经验。点击下方小卡片即可加入群聊(备注“知乎”)。

点击下方链接加入群聊【自动化测试交流群】:
温馨提示:内容为网友见解,仅供参考
无其他回答

一定要会用selenium的等待,3种等待方式解读
1. 强制等待:使用 sleep 函数强制程序暂停指定时间,不考虑浏览器加载状态。这种方式简单直接,但过于死板,会影响代码执行效率。示例代码如下:2. 隐性等待:设置最长等待时间,期间浏览器加载过程中的任何操作都将等待此时间,直到元素加载完成或超时。这种方式让代码更加灵活,但可能等待整个页面加载完成,...

selenium的三种等待方式是什么?
主要有三种等待方式:强制等待、隐式等待和显式等待。强制等待通常使用sleep()函数,称为硬等待。这种方法的缺点是如果等待时间过长,即使元素已经加载,脚本仍会继续等待,导致执行效率低下。隐式等待是在整个WebDriver生命周期中全局设置等待时间,适用于整个脚本或页面加载的超时控制。通过设置超时时间,确保...

Selenium 三种等待方式(强制等待、隐式等待、显示等待)
1. 判断element是否可见:visibility_of_element_located(locator) (可见代表element非隐藏,并且element宽和高都不等于 0)2. 判断某个element是否被加载到dom树:presence_of_element_located(locator) (并不代表该element一定可见)3. 判断某个element中是否可见并且可点击:element_to_be_clickable(...

web自动化系列-selenium的3种等待方式(十一)
1. 等待方式详解元素等待主要有三种:强制等待、隐式等待和显式等待。2.1 强制等待强制等待通过Python的time模块实现,通过在代码中插入暂停时间,让浏览器有足够时间完成渲染。具体位置取决于页面性能,通常在加载较慢的页面后一行添加等待时间,但需根据实际情况调整等待时间,以防等待时间过短或过长。2....

UI自动化测试中,Selenium的三种等待方式详解
implicitly_wait 隐式等待,本质:在脚本的开始设置一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则可能抛出异常。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了,不要当作固定等待使用。缺点:JavaScript一般都是放在我们的body的最后进行加载,实际这时页面的元素都已经...

Selenium等待:sleep、隐式、显式和Fluent
解决页面加载问题时,Selenium提供了隐式等待、显式等待和Fluent等待三种等待方式。在自动化测试中,线程类的静态方法Thread.Sleep()常被用于等待。该方法暂停执行指定时间,不论是否找到所需元素。但使用Thread.Sleep()存在缺点:脚本执行时间受等待时长影响,且超时后可能抛出错误。下面的代码展示了Thread....

Selenium4+Python3系列(六) - Selenium的三种等待,强制等待、隐式等待...
设置元素等待的原因主要是预防定位失败的错误,避免脚本执行过程中的不必要的延迟。具体的方法有三种:强制等待、隐式等待、显式等待。强制等待,即使用 sleep() 函数,是硬等待的方式。其缺点是如果等待时间过长,即使元素已加载,仍会继续等待,导致脚本执行时间冗长。隐式等待,是整个 webDriver 生命周期...

web自动化系列-selenium的3种等待方式(十一)
显示等待则是针对特定元素设置等待时间,直到该元素加载出现才继续执行后续代码。如果在等待时间内元素未出现,则会抛出异常。显示等待提供了更高的灵活性,可以根据需要为不同元素设置不同的等待时间。总的来说,三种等待策略各有利弊,选择哪种策略取决于具体测试需求和页面加载情况。在进行自动化测试时,...

Selenium等待:sleep、隐式、显式和Fluent
为了解决此问题,Selenium提供了多种等待方式。首先,Thread.Sleep()方法允许脚本暂停指定时间,但此方法可能使脚本执行时间过长或导致错误,因此在处理动态元素时并不理想。相比之下,隐式等待和显式等待提供更灵活的等待策略。隐式等待允许指定一段时间内,WebDriver将暂停执行,直到找到所需元素。它简化了...

2018-09-21显示等待、隐式等待和强制等待的区别
在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种,下面我们就分别介绍...

相似回答
大家正在搜