UI自动化(selenium+python)之元素定位的三种等待方式
前言
在UI自动化过程中,常遇到元素未找到,代码报错的情况。这种情况下,需要用等待wait。
在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait
一、固定等待(sleep)
导入time模块,设定固定的等待时间
缺点:在网络状态良好,元素可以加载出来的情况下,依然需要等待,会导致脚本允许时间延长。

二、隐式等待(implicitly_wait)
隐式等待是指页面元素在设定时间内全部加载完成,才能执行下一步。若超过了设定时间报异常
缺点:页面的JS一般是放在body的最后加载的,若JS没有加载,页面想要的元素已经出现,这时还要继续等待。
也会影响脚本执行速度。

三、显示等待(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'))
UI自动化(selenium+python)之元素定位的三种等待方式的更多相关文章
- python selenium 三种等待方式详解[转]
python selenium 三种等待方式详解 引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...
- Selenium学习之==>三种等待方式
在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...
- 关于selenium中的三种等待方式与EC模块的知识
1. 强制等待 第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间. 看代码: 1 2 3 4 5 6 ...
- python-web自动化-三种等待方式
当有元素定位不到时,比如下拉框,弹出框等各种定位不到时:一般是两种问题:1 .有frame :2.没有加等待 下面学习三种等待方式: 1.强制等待 sleep(xx)这种方法简单粗暴,不管浏览器是否加 ...
- 深入selenium三种等待方式使用
深入selenium三种等待方式使用 处理由于网络延迟造成没法找到网页元素 方法一 用time模块不推荐使用 用time模块中的time.sleep来完成等待 from selenium import ...
- Selenium Webdriver元素定位的八种常用方式
楼主原创,欢迎学习和交流,码字不容易,转载请注明出处,谢谢. 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素 ...
- Selenium Webdriver元素定位的八种常用方式(转载)
转载自 https://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或 ...
- 爬虫-【selenium—Webdriver元素定位的八种常用方式
在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...
- Selenium Webdriver元素定位的八种常用方式【转】
在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...
随机推荐
- 五、CI框架之通过带路径的view视图路径访问
一.如果需要现在的某个目录的View界面,需要在controller中写入文件路径 二.访问http://127.0.0.1/CodeIgniter-3.1.10/index.php/显示如下: 不忘 ...
- HZNU-ACM寒假集训Day2小结 二分答案
Day2 ---二分 这里直接给出模板 两种对应不同的情况 可以借助数轴理解 int bsearch_1(int l, int r) { while (l < r) { ; if (check( ...
- c# 异步和同步 多线程
在执行较为耗时的处理时,很容易出现用户界面“卡顿”现象,用异步编程模型,将耗时处理的代码放到另一个线程上执行,不会阻止用户界面线程的继续执行,应用程序 就不再出现“卡顿”现象. 本例子提供同步加载和异 ...
- 201771010123汪慧和《面向对象程序设计Java》第十三周实验总结
一.理论部分 1.GUI为用户提供交互式的图形化操作界面. (1)提供了程序的外观和感觉.(2)程序利用图形用户界面接受用户的输入,向用户输出程序运行的结果. 2.Java有专门的类库生成各种标准图 ...
- BZOJ 4033: [HAOI2015]树上染色
题解: 树形DP 思路,考虑每条边的贡献,即这条边两边的黑点数量相乘+白点数量相乘再成边长 #include<iostream> #include<cstdio> #inclu ...
- java课程之团队开发之用户模板和用户场景
用户模板与用户场景: 姓名:孙某 性别年龄:男 19岁 职业;学生 收入:无 知识层次能力:大学生,用电脑熟练. 生活/工作状况:正常进行上课,学霸. 动机目的,困难:喜欢依据自己的兴趣进行学习. 用 ...
- C基础 带你手写 redis ae 事件驱动模型
引言 - 整体认识 redis ae 事件驱动模型, 网上聊得很多. 但当你仔细看完一篇又一篇之后, 可能你看的很舒服, 但对于 作者为什么要这么写, 出发点, 好处, 缺点 ... 可能还是好模糊, ...
- Spring Cloud Alibaba 教程 | 前世今生
Spring Cloud Alibaba是什么 先来看一下官方是怎么定义Spring Cloud Alibaba的: Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此 ...
- mybatis中foreach collection的三种用法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...
- mysql查询用if控制显示列
1: select *,if(sex=1,”男”,”女”) as sex from user2: select CASE sex WHEN 1 THEN ‘男’ ELSE ‘女’ END as sex ...