自动化测试:Selenium中的时间等待

在 Selenium 中,时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待,包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见,以及使用 until 和 when 等待某个特定操作完成或某个特定事件发生。

下面是一些示例代码: 

1. 使用 presence_of_element_located 方法等待某个元素加载

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待某个元素加载

element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myelement')))

2. 使用 until 等待某个特定操作完成

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待页面中的表单加载完成

element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))

# 查找元素并提交表单

element.find_element_by_id('my-input').send_keys('my-value')

element.find_element_by_id('my-submit').click()

3. 使用 when 等待某个特定事件发生

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待页面中的表单提交完成

element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))

# 等待表单提交完成事件触发

element.find_element_by_id('my-submit').click()

需要注意的是:

时间等待的时间长度应该根据具体的测试用例来确定,并且应该尽可能地模拟真实用 户的行为,以保证测试用例更加准确和可靠。

4. 使用 ExpectedConditions.visibility_of_element_located 方法等待某个元素可见

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待某个元素可见

element = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'my-element')))

需要注意的是:

visibility_of_element_located 方法只能用于等待某个元素可见,而不能用于等待某个元素不可见

另外,visibility_of_element_located 方法可能会比其他方法消耗更多的时间,因为它会等待元素变为可见,而不是仅仅判断元素是否可见。因此,在使用该方法时需要根据具体情况进行调整

5. 使用 ExpectedConditions.title_contains 方法等待页面标题包含指定内容

from selenium import ebdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动

browser = webdriver.Chrome()

# 打开网站

browser.get('

https://example.com

browser.get('

# 等待页面标题包含指定内容

element = WebDriverWait(browser, 10).until(EC.title_contains('My Web Page'))

需要注意的是:

title_contains 方法只能用于等待页面标题包含指定内容,而不能用于等待页面标题不包含指定内容

另外,title_contains 方法可能会比其他方法消耗更多的时间,因为它会等待页面标题完全包含指定内容,而不是仅仅判断页面标题是否包含指定内容。因此在使用该方法时需要根据具体情况进行调整。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

StartAI修图实例教程之海报修图

发现AI的另一种用法——AI修图。想必许多电商小伙伴都会遇到海报修图问题,今天我们就来看看怎么处理! 原图: 1.我们用PS自带的魔法棒工具进行选区,选择海报中需要修改的区域。我们今天是已“2024”两个字为例 效果图&#xff1…

每日必学Linux命令:cd命令

1.命令格式: cd [目录名]2.命令功能 切换当前目录至 [目录名]3. 常用范例 1.进入系统根目录 命令: cd / 说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了 输出: hchc-virtu…

【YOLOv5改进系列(5)】高效涨点----添加密集小目标检测NWD方法

文章目录 🚀🚀🚀前言一、1️⃣ 修改loss.py文件1.1 🎓 修改11.2 ✨ 修改21.3 ⭐️相关代码的解释 二、2️⃣NWD实验2.1 🎓 实验一:基准模型2.2 ✨实验二:NWD权重设置0.52.3 ⭐️实验三&#xf…

开了抖店还不知道怎么下手操作的,建议把这篇文章看完!

大家好,我是电商小布。 我们都知道,抖音这个平台可以说是当前短视频行业中,最主流的项目了。 而这其中发展的电商,也是逐渐成为了行业内的头部。 对于一些想要在其中享受到优势的小伙伴,就抓住这个机会,…

基于Java仓库管理系统设计与实现(源码+部署文档+论文)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

无服务数据库是未来的趋势吗?

无服务数据库是未来的趋势吗? 无服务器数据库是未来的趋势吗?无服务器数据库与传统云数据库有何不同? Amazon Aurora Serverless(如下图所示)是 Amazon Aurora 的一种配置方式,可以按需自动扩展。 Aurora…

ChatGPT 商业金矿(上)

原文:ChatGPT Business Goldmines 译者:飞龙 协议:CC BY-NC-SA 4.0 第一章:为什么我写这本书 欢迎阅读《ChatGPT 多源收入:20 个利润丰厚的业务,任何人都可以在一周内使用 ChatGPT 开始》。我很高兴分享我…

谷歌上架,账号高风险被封,一定是账号问题吗?

最近,很多开发者反馈,开发者账号总是被谷歌官方以“高风险行为”封号。封号邮件如图: 我们都清楚,账号被封的主要原因无非是账号本身质量问题和程序代码的问题。但目前大多数开发者普遍认为,如果账号是因为“高风险”被…

m4r是什么文件格式?用什么软件打开?

m4r文件格式的诞生伴随着移动设备智能化的崛起。这个格式最初是苹果公司为其iPhone设计的一种特殊的铃声格式。在这个数字音频领域,用户对于个性化铃声的需求逐渐升温,m4r文件格式因此迎来了时代的机遇。这个独特的音频格式的产生,旨在为用户…

UE RPC 外网联机(1)

技术&#xff1a;RPC TCP通信 设计&#xff1a;大厅服务<---TCP--->房间服务<---RPC--->客户端&#xff08;Creator / Participator&#xff09; 1. PlayerController 用于RPC通信控制 2.GameMode 用于数据同步 3.类图 4. 注意 &#xff08;1&#xff09;RPC&a…

Advisor 被重复代理问题排查

问题场景 项目中存在多个 AbstractAdvisorAutoProxyCreator 且其持有的 Advisor Bean 重复 问题复现 相关代码 ResponseBodyRequiresPermissions(PermissionConstant.****)GetMapping(value "/query****.json", name "")public List<***> query…

处理 Oracle 数据库表空间满的问题

处理 Oracle 数据库表空间满的问题 1、诊断表空间满的问题2、处理表空间满的问题3、设置表空间自增结论 在 Oracle 数据库管理中&#xff0c;表空间是一个重要的概念&#xff0c;用于存储数据库对象和数据。当表空间满了时&#xff0c;可能会导致数据库的运行受到影响&#xff…

计算机网络知识

第一章 局域网广播技术&#xff1b;广域网交换技术 n-SDUn-PCIn-PDU TCP/IP网络层无连接&#xff0c;传输层有链接和无连接&#xff1b;OSI传输层有链接和无连接&#xff0c;网络层有链接 TCP/IP没有明确区分服务&#xff0c;接口&#xff0c;协议&#xff0c;OSI明确区分 OSI…

实验7 内置对象response

编写代码&#xff0c;掌握request、response的用法。【参考课本4.6.2】 三、源代码以及执行结果截图&#xff1a; input.jsp <% page language"java" contentType"text/html; charsetutf-8" pageEncoding"utf-8"%> <!DOCTYPE html>…

微信小程序开发之常用组件解释

1 基础内容组件 1.1text组件 text的功能主要是用于内联文本&#xff0c;与网页中的span有点类似。 主要属性有 例子&#xff1a;页面上添加一个可以选中的文本 在wxml文件中添加&#xff1a; <view> <text user-select>17544456565</text> </view>…

ReentrantLock 原理

(一)、非公平锁实现原理 1、加锁解锁流程 先从构造器开始看&#xff0c;默认为非公平锁实现 public ReentrantLock() {sync new NonfairSync(); } NonfairSync 继承自 AQS 没有竞争时 加锁流程 构造器构造&#xff0c;默认构造非公平锁(无竞争&#xff0c;第一个线程尝试…

Jmeter使用BeanShell保存数据到文件

1、目的 在使用jmeter压测时&#xff0c;业务上下连贯&#xff0c;需要对一些编号进行关联操作。这里使用‘JSON提取器’将值提取出来&#xff0c;后面请求可以直接使用。其它业务想要使用就只能把值保存到文件&#xff0c;再使用文件做参数化了。 2、JSON提取器 提取请求值 提…

MongoDB副本集环境搭建(以单机Windows为例)

前言 近期有搭建MongoDB副本集的需求,简单记录一下搭建过程(以本地Windows环境为例)。 一、副本集选型 1 Primary节点、1 Secondary 节点、1 Arbiter节点模式副本集环境搭建。 二、搭建过程 1. 安装MongoDB服务 下载地址:https://www.mongodb.com,如下图所示: 选择…

1.排列数组奇数在前偶数在后

文章目录 大家好&#xff0c;我是晓星航。今天为大家带来的是 排列数组奇数在前偶数在后 相关的讲解&#xff01;&#x1f600; public static void swap(int[] array) {int left 0;int right array.length - 1;while (left < right) {while (left < right &&…

SQLAlchemy常用数据类型

Integer &#xff1a;整形&#xff0c;映射到数据库中是 int 类型。 Float &#xff1a;浮点类型&#xff0c;映射到数据库中是 float 类型。他占据的 32 位。 Double &#xff1a;双精度浮点类型&#xff0c;映射到数据库中是 double 类型&#xff0c;占 据64 位 (SQLALCHEM…
最新文章