UI自动化(selenium+python)之元素定位的三种等待方式!

前言

在UI自动化过程中,常遇到元素未找到,代码报错的情况。这种情况下,需要用等待wait。

在selenium中可以用到三种等待方式即sleep ,implicitly_wait,WebDriverWait

一、固定等待(sleep)

导入time模块,设定固定的等待时间

缺点:在网络状态良好,元素可以加载出来的情况下,依然需要等待,会导致脚本允许时间延长。

二、隐式等待(implicitly_wait)

隐式等待是指页面元素在设定时间内全部加载完成,才能执行下一步。若超过了设定时间报异常

缺点:页面的JS一般是放在body的最后加载的,若JS没有加载,页面想要的元素已经出现,这时还要继续等待。

也会影响脚本执行速度。

复制代码
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

三、显示等待(WebDriverWait)

通过from selenium.webdriver.support.wait import WebDriverWait 导入方法WebDriverWait()

参数:

driver:浏览器驱动

timeout:最长超时时间,单位秒

**poll_frequency:**监测频率时长,单位秒

**ignored_exception:**忽略的异常信息,若报的是元组内的异常,则不中断代码,继续执行。若报的元组外的异常,则中断代码,停止执行。

WebDriverWait函数中有until和until not两个方法:

until和until not都有参数method和message。注意这里的method参数必须含有_call_(),使得类实例对象可以像调用普通函数那样,以"对象名()"的形式使用

**method:**在等待时间内,每隔一段时间调用下method这个参数,判断返回值是否为True,若为True则执行下一步。

**message:**超时后,报TimeoutException写入message。

WebDriverWait与expected_conditions结合使用:

expected_conditions类提供的条件判断方法:

除了上述expected_conditions方法,还可以使用匿名函数lambda

lambda driver:driver.find_element(<定位元素>)

例如:WebDriverWait(driver, 5, 1).until(lambda driver:driver.find_element_by_id('kw'))

END今天的分享就到此结束了!点赞关注不迷路~

相关推荐
czlczl200209256 分钟前
如何添加“默认给Sql查询语句加上租户条件”的功能
数据库·python·sql
破烂pan7 分钟前
Python 长连接实现方式全景解析
python·websocket·sse
高洁018 分钟前
一文了解图神经网络
人工智能·python·深度学习·机器学习·transformer
咸鱼加辣12 分钟前
按“最近是否用过”删(LRU)
python
serve the people23 分钟前
tensorflow 零基础吃透:创建 tf.sparse.SparseTensor 的核心方法
人工智能·python·tensorflow
测试老哥25 分钟前
UI自动化测试—Jenkins配置优化
自动化测试·软件测试·python·测试工具·ui·jenkins·测试用例
曲幽26 分钟前
Python包管理告别龟速下载:uv工具国内镜像与离线安装实战
python·conda·pip·uv·venv·uvx
TsengOnce1 小时前
阿里云ECS多版本JDK切换
java·python·阿里云
Hi_kenyon1 小时前
FastAPI+VUE3创建一个项目的步骤模板(三)
python·fastapi
子夜江寒1 小时前
基于Selenium的自动化Web数据采集实践
selenium·自动化