Python的web自动化学习(三)Selenium的显性、隐形等待

news/2024/12/23 4:22:20/

引言:

WebDriver的显性等待和隐形等待是用于在测试过程中等待元素加载或操作完成的两种等待方式。了解此两种方式是为后面自动化找到适合的方法去运用

显性等待(Explicit Wait)

显性等待是通过使用WebDriverWait类和ExpectedConditions类来实现的。它可以在测试中指定一个最长等待时间,并且在等待时间内不断轮询页面元素的状态,直到满足指定的条件。当条件满足或超过最长等待时间时,等待将结束,然后继续执行后续的测试步骤。

显性等待的使用步骤如下:

创建一个WebDriverWait对象,指定最长等待时间和轮询间隔时间。
使用ExpectedConditions类的方法来指定等待的条件,例如元素可见、元素存在、元素可点击等。
调用WebDriverWait对象的until()方法,传入指定的条件。
示例代码:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 创建WebDriverWait对象,设置最长等待时间为60秒
wait = WebDriverWait(driver, 60)# 等待元素可见
element = wait.until(EC.visibility_of_element_located((By.ID, 'element_id')))

隐形等待(Implicit Wait)

隐形等待是在创建WebDriver对象时设置的一个全局等待时间。它会在执行每个WebDriver操作时自动等待一段时间,如果元素在等待时间内找到,则立即执行操作,否则抛出NoSuchElementException异常。

隐形等待的使用方式如下:

driver.implicitly_wait(10)  # 设置全局等待时间为10秒

显性等待和隐形等待都是用于等待元素加载或操作完成的等待方式,它们各自有以下优点:

显性等待的优点:
1. 灵活性高:显性等待可以根据具体的等待条件来等待元素加载或操作完成,可以根据需要指定等待的条件,例如元素可见、元素存在、元素可点击等。
2. 等待时间可控:显性等待可以设置一个最长等待时间,可以确保在等待时间内完成等待,避免无限等待的情况发生。
3. 更精确的等待:显性等待可以根据需要等待特定的元素或条件,可以更精确地等待目标元素的加载或操作完成。隐形等待的优点:
1. 简单易用:隐形等待只需要在创建WebDriver对象时设置一个全局等待时间,无需额外的代码和操作,非常简单易用。
2. 全局适用:隐形等待适用于整个测试过程中的普遍等待,可以自动应用于所有的WebDriver操作,减少了重复的等待代码。
3. 提高测试效率:隐形等待可以在等待时间内自动等待元素加载或操作完成,减少了手动等待的时间,提高了测试的效率。

总结:
显性等待和隐形等待都有各自的优点,显性等待更加灵活,可以根据具体需求指定等待条件和等待时间,适用于特定的等待场景;而隐形等待简单易用,可以全局适用于整个测试过程,提高了测试效率。根据具体的测试需求和场景,可以选择适合的等待方式来实现等待功能。

需要注意的是,显性等待和隐形等待可以同时使用,但是它们的等待时间不会叠加,而是取较大的那个等待时间。

总结:

显性等待是通过设置最长等待时间和指定条件来等待元素的加载或操作完成,更加灵活,适用于特定的等待场景;而隐形等待是在全局范围内设置一个等待时间,适用于整个测试过程中的普遍等待。根据具体的测试需求,可以选择使用显性等待、隐形等待或二者结合来实现等待功能。


http://www.ppmy.cn/news/1190736.html

相关文章

JavaEE就业课 V12.5 完整版

简介 众所周知,在IT互联网领域是靠技术吃饭的,更符合企业需求的先进技术才是硬通货。黑马Java学科一直在行动,一直走在行业最前沿! 四项目制用四个不同类型、不同开发深度的项目,去解决企业用人需求与学员具备相应开发能力匹配的…

Android NDK开发详解之调试和性能分析的系统跟踪概览

Android NDK开发详解之调试和性能分析的系统跟踪概览 系统跟踪指南 “系统跟踪”就是记录短时间内的设备活动。系统跟踪会生成跟踪文件,该文件可用于生成系统报告。此报告有助于您了解如何最有效地提升应用或游戏的性能。 有关进行跟踪和性能分析的全面介绍&#x…

【数据结构】树形结构所有路径复原为链表

目录 1. 树形结构可视化 2. 树形结构转为链表 此目标是要还原树形结构的所有路径。树形结构是一种常见的数据结构,它表示元素之间层次关系。在树形结构中,每个节点可能拥有一个或多个子节点,形成了一个分层的结构。为了还原树形结构的路径&…

Ubuntu定时执行任务

cron一个Linux定时执行工具,可以定时执行一些任务。 crontab -l 如果显示“no crontab for xxx” 说明没有启动cron。 service cron start 这样就启动cron了。 服务相关命令: service cron stop service cron restart service cron reload 查看当…

pandora的使用

在服务器上搭建Poandra-GPT一般用的centos系统,windows虽然也行… 用Centos的话可能涉及python的环境问题,pandora需要3.7以上 的python版本,如果在服务器肉身上做实验,对于新手可能很容易出问题,详细教程参考为之前写…

11月1日星期三今日早报简报微语报早读

11月1日星期三,农历九月十八,早报微语早读分享。 1、神舟十六号航天员乘组平安抵京; 2、微信/抖音/B站等平台:将推动50万粉以上“自媒体”账号实名信息展示; 3、第三批鼓励仿制药品建议目录公示,包括抗癌…

Python测试之Pytest详解

概要 当涉及到python的测试框架时,pytest是一个功能强大且广泛应用的第三方库。它提供简洁而灵活的方式来编写和执行测试用例,并具有广泛的应用场景。下面是pytest的介绍和详细使用说明: pytest是一个用于python单元测试的框架,它…

《TCP/IP详解 卷一:协议》第5章的IPv4数据报的Checksum(校验和)字段的计算(这里才能解开你的困惑)

首先,我当你看过书,但是比较懵。 1,实例说明Checksum(校验和)的计算步骤 直奔主题,分析一下这个Checksum(校验和)怎么算出来的。 先用Wireshark随便抓一个UDP或TCP包分析一下。 如上面,我们得…