自动化专家来谈谈Selenium中的时间等待

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

下面是一些示例代码:

  1. 使用 presence_of_element_located 方法等待某个元素加载
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 设置浏览器驱动browser = webdriver.Chrome()# 打开网站browser.get('https://example.combrowser.get('# 等待某个元素加载element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myelement')))

  1. 使用 until 等待某个特定操作完成
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 设置浏览器驱动browser = webdriver.Chrome()# 打开网站browser.get('https://example.combrowser.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()

  1. 使用 when 等待某个特定事件发生
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 设置浏览器驱动browser = webdriver.Chrome()# 打开网站browser.get('https://example.combrowser.get('# 等待页面中的表单提交完成element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'myform')))# 等待表单提交完成事件触发element.find_element_by_id('my-submit').click()

需要注意的是:

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

  1. 使用 ExpectedConditions.visibility_of_element_located 方法等待某个元素可见
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 设置浏览器驱动browser = webdriver.Chrome()# 打开网站browser.get('https://example.combrowser.get('# 等待某个元素可见element = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'my-element')))

需要注意的是:

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

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

  1. 使用 ExpectedConditions.title_contains 方法等待页面标题包含指定内容
from selenium import ebdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 设置浏览器驱动browser = webdriver.Chrome()# 打开网站browser.get('https://example.combrowser.get('# 等待页面标题包含指定内容element = WebDriverWait(browser, 10).until(EC.title_contains('My Web Page'))

需要注意的是:

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

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

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
全套资料获取方式:

在这里插入图片描述

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

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

相关文章

小白如何选择阿里云服务器配置?小白不怕

阿里云服务器配置怎么选择?CPU内存、公网带宽和系统盘怎么选择?个人开发者或中小企业选择轻量应用服务器、ECS经济型e实例,企业用户选择ECS通用算力型u1云服务器、ECS计算型c7、通用型g7云服务器,阿里云服务器网aliyunfuwuqi.com整…

事件流、事件捕获、事件冒泡、事件委托

一、事件流 事件流指的是事件完整执行过程中的流动路径,分为捕获阶段、冒泡阶段。如上图 二、事件捕获 当一个元素的事件被触发时,会从DOM的根元素开始,依次调用同名事件(从外到里,从父到子)。 DOM.addEve…

基于炬芯ATS283X头戴式蓝牙耳机开发

基于炬芯ATS283X头戴式蓝牙耳机开发 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加他微信hezkz17, 本群提供音频技术答疑服务,+群赠送蓝牙音频,DSP音频项目核心开发资料, 1 电路设计 2 SDK 开发

CryoEM - CryoAI: Amortized Inference of Poses 工程源码复现

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136384544 Paper: CryoAI: Amortized Inference of Poses for Ab Initio Reconstruction of 3D Molecular Volumes from Real Cryo-EM Images CryoAI: 基于摊…

国产嵌入式DSP教学实验箱_操作教程:22-AD采集DA输出实验(采集输出正弦波)

一、实验目的 掌握EMIFA、SPI的使用,了解AD7606、AD5724的芯片特性和使用,并实现基于AD7606采集、AD5724输出正弦波。 二、实验原理 StarterWare StarterWare是一个免费的软件开发包,它包含了示例应用程序。StarterWare提供了一套完整的G…

代码随想录刷题笔记-Day30

1. 解数独 37. 解数独https://leetcode.cn/problems/sudoku-solver/ 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x…

打动HR的秘密武器:四款在线简历制作网站,让你脱颖而出!

如果你想找到一份好工作,你必须先写一份优秀的工作。在这个人力资源部承认一天要看数百份简历的时代,求职者需要一份优秀的简历才能脱颖而出,获得面试机会。 现实中,很多人往往无法设计出满意的简历,所以他们甚至没有…

人工智能-飞桨

文章目录 概要安装零基础教程基础知识小结 概要 集核心框架、基础模型库、端到端开发套件、丰富的工具组件于一体的深度学习平台 官方入口 安装 python安装 python官方下载 PaddlePaddle安装 python -m pip install paddlepaddle2.6.0 -i https://mirror.baidu.com/pypi/s…

上位机图像处理和嵌入式模块部署(qmacvisual三个特色)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 了解了qmacvisual的配置之后,正常来说,我们需要了解下不同插件的功能是什么。不过我们不用着急,可以继续学习下…

MySQL数据库技术(二)

MySQL数据库技术(1X) 定义表的时候,需要确定每个字段的数据类型。MySQL 支持多种数据类型, 大致可以分为三类:数值类型、日期/时间类型和字符串类型。 数值类型 数值类型包括 5 种整数、2 种浮点数和 1 种定点数&a…

Java 实现国网698协议,帧头、数据帧校验算法

最近在做电表测试相关软件,开发过程需要学习698协议,网上关于698协议的资料很少。此文记录一下协议中关于帧头和整帧校验码算法,Java代码如下: public class Test {public static void main(String[] args) {//定义一个字节数据用…

跨境电商选品API商品采集API接入指南

选品是每个电商卖家的必经之路,产品的好坏将直接决定店铺的盈利、发展方向。选择合适的产品可以让卖家事半功倍,快速爆单。 用API实现代购系统和1688淘宝等平台的商品信息对接,可以免去很多选品工作。 item_get 获得淘宝商品详情item_get_p…

在vue3中使用el-tree-select做一个树形下拉选择器

el-tree-select是一个含有下拉菜单的树形选择器,结合了 el-tree 和 el-select 两个组件的功能。 因为包含了el-tree的功能,我们可以自定义tree的节点,创造出想要的组件 使用default插槽可以自定义节点内容,它的default插槽相当于…

Day19:信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

目录 各类红蓝队优秀工具项目集合 自动化-武器库部署-F8x 自动化-网络空间-AsamF 自动化-企查信息-ENScan 自动化-综合架构-ARL&Nemo 思维导图 章节知识点 Web:语言/CMS/中间件/数据库/系统/WAF等 系统:操作系统/端口服务/网络环境/防火墙等 应…

高中数学:单调奇偶综合(较难)

一、奇偶性扩展 1、普通轴对称函数 要会根据抽象函数的关系,找出对称轴 简便记法:纵相等,对称轴 2、普通中心对称函数 要会找出对称中心点坐标 简便记法:纵和定,中心点 二、题型汇总 解题方法 抽象函数 1、…

如果不使用管理器,星露谷如何安装模组

Mac、Linux、安卓系统建议阅读官方WIKI 如果你没有特殊的需求,可以使用小火星露谷管理器一键安装模组 https://smallfire.cn 1. 什么是模组? 扩展或修改游戏的文件。可以改变游戏。功能如下: 扩展游戏内容,比如添加额外的游戏…

C++ 多态的概述

文章目录 1、概念2、引入3、使用基类指针、引用 访问 子类对象中的成员方法(虚函数)4、基类指针作为函数的参数 函数可以操作该基类派生出的任意子类对象 1、概念 多态是c的特征之一 多态的分类:静态多态(静态联编)、…

Android Studio开发(二) 常用布局

1、概述 在Android Studio中,布局方式指的是用于定义和排列界面元素(如按钮、文本框、图片等)的方式。Android应用的界面通常由多个视图组件组成,而布局方式则确定了这些视图组件在屏幕上的位置、大小和相互关系。 适应不同屏幕尺…

时钟显示 html JavaScript

sf.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>时间</title><script>function showTime(){var timenew Date();var datetime.getDate();var yeartime.getFullYear();var monthtime.getMonth()1;var …

Tailscale中继服务derper使用docker-compose部署

docker启动 docker run --restart always \--name derper -p 12345:12345 -p 3478:3478/udp \-v /root/.acme.sh/xxxx/:/app/certs \-e DERP_CERT_MODEmanual \-e DERP_ADDR12345 \-e DERP_DOMAINxxxx \-d ghcr.io/yangchuansheng/derper:latestdocker-compose启动 version: …