【Python自动化测试】:3种元素等待方式

保姆级教程:手把手教你用SMBus协议读取笔记本电池信息(基于最新V3.3 Spec) 本文详细介绍了SMBus V3.3协议的基础知识和新特性,包括总线速度提升、数据宽度扩展等。通过实战案例,手把手教你如何使用SMBus协议读取笔记本电池信息,涵盖基础信息读取、健康状态分析和错误处理等关键步骤,适合嵌入式系统开发者参考。 阅读详情

为何需要等待元素呢?

1、 某些元素或者操作,只有在加载完成后才能够正确定位到。
2、 若是元素还没有加载出来,就执行查询该元素的代码,就会出现错误:no such element

1、元素等待方式一:sleep()强制等待

【语法实现】

  • time.sleep(5)单位是s,线程直接进入休眠,这几秒内啥事也不用干
from time import sleep
sleep(5)

【优点】

  • 简单明了

【缺点】

  • 休眠时间不好把握:
    • 如果设置休眠时间过短,休眠结束元素还没有加载出来,会导致程序报错;
    • 如果设置休眠时间过长,元素已经加载出来程序还在继续等待,会造成时间浪费,影响代码的整体运行效率。

2、元素等待方式二:隐式等待implicitly_wait()

  • driver.implicitly_wait(5)
  • 默认是0s等待,设置之后的值是最大超时时间,等待时间为整个页面全部加载完成的时间

优点

  • 作用于全局:在初始化driver后面加,后面的代码都会受到影响
  • 设置的时间为整个页面的最大加载时长,非必须等待时长(如果在设置的最大超时时间之前整个页面已经加载完成,就会立即执行下面的脚本)

缺点

  • 在设置的最大超时时间结束后仍然没有加载到整个页面,就会报错:no such element

3、元素等待方式三:显式等待WebDriverWait()

  • 等待指定元素,等到就可以返回元素对象;在超时时间到达之后仍未等到,那么就抛出异常:TimeoutException。
  • 简而言之,就是直到元素出现就去操作,如果超时就抛出异常。
  • WebDriverWait()的结果返回定位到的元素
#导包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 导入显式等待的包
from selenium.webdriver.support.ui import WebDriverWait

# 语法   
element = WebDriverWait(自定义浏览器驱动名称, 最大超时时间, 检测的时间间隔).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

from time import sleep

# 生成谷歌浏览器对象
driver = webdriver.Chrome()

# 打开百度网页
driver.get('https://www.baidu.com/')

# 在百度搜索输入框输入“python自动化”,并点击“百度一下”按钮
driver.find_element(By.ID, 'kw').send_keys("python自动化")
driver.find_element(By.CSS_SELECTOR, '#su').click()

# 显式等待元素
element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "办公")), '没有找到元素')
element.click()

# 返回的页面停留5秒钟
sleep(5)
# 关闭浏览器
driver.quit()

3.1 导入excepted_conditions 模块

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
  • 判断一个元素是否存在。如:如何判断alert弹窗出来了;如何判断冬天的元素等

3.1.1 title_is()

  • 判断当前页面的title是否完全等于(==)预期字符串,返回结果为布尔类型
# 导包
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

# 生成浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度首页
driver.get('https://www.baidu.com')

# 判断返回的页面标题是否和预期一致,判断结果为布尔类型
result = EC.title_is('百度一下,你就知道')(driver)
# 打印返回结果
print(result)

3.1.2 title_contains()

  • 判断当前页面的标题是否包含预期字符串,返回结果为布尔类型
# 导包
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

# 生成浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度首页
driver.get('https://www.baidu.com')

# 判断返回的页面标题是否包含预期字符串,判断结果为布尔类型
result2 = EC.title_contains('知道')(driver)

# 打印返回结果
print(result2)

3.1.3 presence_of_element_located()方法

def presence_of_element_located(locator: Any) -> (driver: {find_element}) -> Any
An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible.
locator - used to find the element returns the WebElement once it is located
# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# 语法 
element = WebDriverWait(自定义浏览器驱动名称, 最大超时时间, 检测的时间间隔).until(EC.presence_of_element_located((By.属性名, '属性值'), 错误信息)
  • 一种 WebDriverWait 方法,用于等待某个元素出现在页面上。它可以通过在页面上查找元素来判断页面是否加载完成。
# 导包
# 导包
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

from time import sleep

# 生成谷歌浏览器对象
driver = webdriver.Chrome()

# 打开百度网页
driver.get('https://www.baidu.com/')

# 在百度搜索输入框输入“python自动化”,并点击“百度一下”按钮
driver.find_element(By.ID, 'kw').send_keys("python自动化")
driver.find_element(By.CSS_SELECTOR, '#su').click()

# 显式等待元素
element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "办公")), '没有找到元素')
element.click()

# 返回的页面停留5秒钟
sleep(5)
# 关闭浏览器
driver.quit()
【Python自动化测试30】Web自动化之三大等待与三大切换 文章目录一、前言二、三大等待详解2.1 初识三大等待方式2.2 三大等待说明 一、前言   本文章主要会讲解selenium中的三大等待方式,除此之外下方有系列文章的传送门,还在持续更新中,感兴趣的小伙伴也可以前往查看,话不多说,让我们一起看看吧~ 系列文章:   系列文章1:【Python自动化测试1】遇见Python之美   系列文章2:【Python自动化测试2】Python安装配置及PyCharm基本使用   系列文章3:【Python自动化测试3】初识数据类型与基础语法   系列文章4:【P 阅读详情

相关推荐

第五十(基础):Python+Selenium基础API(如何设置隐式等待)

【代码】第五十(基础):Python+Selenium基础API(如何设置隐式等待)

欢迎来到本博客! 166

Python等待的方法

python等待

快乐的流浪 1万+

SAP 第三方销售

第三方销售

yanzibing99的博客 3514

python里三种等待元素出现的方法

在做web或app的自动化测试经过会出现找不到元素而报错的情况,很多时候是因为元素 还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了。那么我可以用等待 元素加载完成后再执行查找元素的code。 Python里有三种等待的方式:一、强制等待Sleep(54) 这个方法在time模块,使用时通过from time import sleep导入比如:Sleep(10) #表示强行等待10s...

niedongri的博客 1万+

百度API实现人流量数量检测(动态)

百度的这个API还挺好用的,对与不追求高精度的人来说非常适用,结合他官方给的文档,极易上手。 需要做的就是通过API Key和Secret Key获取的access_token。 然后稍微修改下代码就行,但是他给的代码并没有直接从摄像头获取视频,而是读取一个文件夹,那么就需要自己先对摄像头的输出视频进行处理。 识别结果如下,"person_num"是当前画面的人数,in是累计进入的人数,out是累计走出去的人数。 他这个有个缺点就是返回值里边并没有实时返回in和out的值,而是都是0,但是这个图片上有,图片

qq_42479987的博客 3380

机房电脑的“还原”秘密:如何应对重启即清零的困境

机房电脑重启后自动还原是常见的现象,这主要依靠硬件还原卡或软件还原系统(如冰点还原)实现。这类技术会定期将系统盘恢复初始状态,但通常不保护非系统盘。要高效使用公共电脑,建议:1)将个人文件存储在D/E盘;2)使用绿色便携软件;3)必要时可尝试通过热键临时关闭还原功能;4)养成云端备份习惯。掌握这些技巧既能遵守机房规定,又能保证学习资料安全,培养良好的数字资产管理能力。

一位主要以学校学生信息技术,社会工作生活讲解科普拓展的博主 1456

selenium中三种等待方式:sleep,implicitly_wait,WebDriverWait

三种等待方式:sleep 强制等待, sleep,设置等待多长时间,就要等待多长时间。通常使用这个等待方式的场景为,静态元素的加载,不需要从服务器上请求,可以很笃定的知道,多少时间之内,这个元素肯定会加载出来。 比如百度首页的登录按钮。点击登录时,会弹出登录窗口。但这个窗口其实在访问百度首页时就已经加载好了,点击登录时,并不是从服务器上请求再加载,而是直接加载静态页面,不受网速的影响,3s之内,肯定可以加载完成: from selenium import webdriver # 导入sleep from

努力是为了让自己更加有方向 1万+

【大语言模型 85】IA3与其他PEFT方法对比

在大语言模型时代,参数高效微调(PEFT)技术成为了降低微调成本的关键。本文深入解析IA3(Infused Adapter by Inhibiting and Amplifying Inner Activations)方法,并与LoRA、AdaLoRA、Prefix Tuning等主流PEFT技术进行全面对比,通过理论分析、代码实现和实验验证,帮助读者理解不同PEFT方法的优劣势和适用场景,为实际项目中的技术选型提供科学依据。

熵数实验室 753

Python selenium —— 一定要会用selenium的等待,三种等待方式解读

发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性。很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出门?凹凸曼分分中内心一万只羊驼飞过,欺负哥

灰蓝 10万+

《FPGA接口与协议》专栏的说明与导航

《FPGA接口与协议》专栏的说明与导航(建议阅读)。

孤独的单刀 17万+

还在用 RaiDrive/Rclone 挂载网盘?教您使用Windows 原生 WebDAV 丝滑直连 AList/Openlist,让你的网盘秒变本地硬盘!

网盘文件分散管理?😩 别再依赖第三方工具了!本文教你如何在 Windows 下,利用原生 WebDAV 功能,将 Openlist 网盘直接映射为本地硬盘!💻 操作简单,告别繁琐,让你的云端文件像本地文件一样丝滑!🚀 轻松实现高效管理,快来体验吧!

XiaoqiangClub的博客 2974

python自动化测试selenium核心技术三种等待方式

​​UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利执行。

软件测试技术资源分享官 1207

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4628

python 中的三种等待方式

为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错(An element could not be located on the page using the given search parameters.),提示没有找到元素这时就可能出现时而能点击,时而又不能点击到,原因是:因为元素还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了.解决方...

贾话 2万+

基于聚类特征工程的水果销量预测:聚类算法对比与多模型评估

水果销量预测研究:聚类分群与多模型对比 摘要 本研究提出了一种融合聚类分析与机器学习的水果销量预测方法。基于包含12个维度的销售数据集,首先采用K-Means、BIRCH和DBSCAN三种聚类算法对水果品类进行分群,通过轮廓系数等指标评估显示BIRCH算法表现最优(0.387)。随后针对不同群组构建差异化特征工程,并比较XGBoost、LightGBM和LSTM三种预测模型性能。实验结果表明:基于聚类特征工程的LightGBM模型预测效果最佳(RMSE=2.34,R²=0.87).

huanghm88的专栏 137

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

自动化测试之三种元素等待方式(python3.10+selenium4)

设置等待的意义:因为某些元素或者某些操作只有加载完成才能够定位到。在写自动化的脚本时执行脚本是错,提示没有找到元素。

李同学Lino的博客 888

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

自动化测试中三种等待的方式

为什么要用等待时间: 在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错( An element could not be located on the page using the given search parameters.),提示没有找到元素这时就可能出现时而能点击,时而又不能点击到,原因是:因为元素还没有被加载出来,查找的代码就已经被执行了,自然就找不到元素了.解决方式:可以用等待,等元素加载完成后再执行查找元素语句。 三种等待的方式: 1、强制等待 导入定时等待库 from tim

sunzhizhao的博客 4065

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python自动化中三种等待时间方式

自动化测试,是交由机器来执行的一种测试手段,用于提升测试效率,意味着每一次的自动化测试都需要有非常高的成功率,才可以达到提升效率的作用。

软件测试技术资源分享官 1438

python自动化测试selenium核心技术3种等待方式详解

这篇文章主要为大家介绍了python自动化测试selenium的核心技术三种等待方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利执行。

m0_47485438的博客 653

乐橙等待登录返回超时_Selenium3 + Python3自动化测试系列——等待方式

等待一、等待是什么,为什么要等待在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等,这时候,我们就需要使用等待,来判断上一步操作是否完成,什么时候可以进行下一步操作。否则,上一步操作如果花费的时间较长,还没有完成,就去进行下一步操作,这时就会产生无法定位到元素,元素状态不正确,数据校验结果不正确等异常。在Selenium中常用的等...

weixin_30619981的博客 1210

Python + Selenium —— 三种等待方式

自动化测试脚本在运行时,由于网络原因、机器卡顿、页面元素呈现等原因,导致定位失败。定位失败导致元素无法操作,获取不到用于断言的内容。最终在检查测试结果时就会出现很多因为这些原因而导致的测试失败,需要花大量精力来排查才能找到真正意义上的问题。所以必须要使用等待。其实 Selenium 是有默认等待的,当你打开页面时默认会等待页面元素加载完毕才进行元素定位。但是页面加载完毕后产生变化的元素则无法产生等待。导致页面产生变化的原因:ajax 动态加载内容。

hlsxjh的博客 1458

webdriver 的三种等待方式(强制等待、隐式等待、显示等待)

在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定的超时时间,大致应该在1-3秒的样子,如果这个时间内仍然定位不到元素,就会抛出异常,中止脚本执行。我们可以通过在脚本中设置等待的方式来避免由于网络延迟或浏览器卡顿导致的偶然失败,常用的等待方式有三种: 一、强制等待  强制等待是利用python语言自带的time库中的sleep()方法: from ...

ST_君华的博客 1万+

自动化测试之等待方式

在设置隐式等待后,在代码中使用了元素定位的方法,如find_element_by_xpath、find_element_by_id等,会在指定的等待时间内等待元素出现。自动化测试中使用的等待方式,特点是在代码中设置一个等待时间,如果在指定的时间内找到了元素,则继续执行后续代码。一种在自动化测试中使用的等待方式,它的特点是在代码中明确地指定一个特定的条件,等待直到条件满足后再继续执行后续代码。通过显示等待,可以解决页面加载或元素定位的延迟问题,确保在条件满足后再进行后续操作,避免不必要的等待时间。

zhangsiyuan1998的博客 919

python selenium 等待元素出现_Selenium 3种等待方式

加入等待时间,主要是考虑到网页加载需要时间,可能由于网速慢,或者使用了 ajax 技术实现了异步加载等,如果程序找不到指定的页面元素,就会导致报错发生。常用的有3种等待方式:强制等待隐式等待显示等待强制等待使用 Python 自身的库 time.sleep() 可以实现强制等待。强制等待使用简单,但是,当网络条件良好的时候,建议减少使用,因为如果频繁使用强制等待的方式等待元素加载,会导致整个项目的...

weixin_39851887的博客 3566

Python3+Selenium3自动化测试 - 定位并操作元素+等待方式

Python3+Selenium3自动化测试 - 定位并操作元素根据id获取元素并操作find_element_by_xpath 定位DOM元素find_element_by_css_selector 定位DOM元素Selenium常用的方法总结 根据id获取元素并操作 import time from selenium import webdriver from selenium.webdriver.common.by import By #启动谷歌浏览器,火狐则是webdriver.firefox()

notHavaBug的博客 809
上一篇: 【商户接入常见银行卡号位数】对公卡号|对私卡号
下一篇: 【Python自动化测试】:浏览器操作
Lucifer__hell
博客等级 码龄8年 53粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值