| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> selenium中的三种等待方法 -> 正文阅读 |
|
[开发测试]selenium中的三种等待方法 |
在selenium执行的过程中,我们经常会遇到这样一个问题:当我们使用find_element方法去定位元素时,发现实际页面中存在这个元素,但是我们的代码却抛出NoSuchElementException的异常。 这是因为代码的执行速度比浏览器服务器的相应速度快得多,浏览器还没来得及将结果返回给我们,代码就已经跑到下面去了。 为此,我们需要一个等待时间来等待浏览器的响应结果。selenium有三种常用方法设置等待时间。 1.强制等待通过time模块中的sleep()方法,让我们的代码在执行到某个位置时强制等待一段时间,如下例:
使用sleep()方法的缺点是不够灵活,不能准确把握等待时间。 2.隐式等待通过webdriver对象的implicitly_wait()方法,该方法一次设置,全局有效。当我们去定位页面元素时,如果元素没有找到,不会立即抛出异常,而是周期性地(通常为 0.5s)去重新寻找,直到该元素找到或者超过最大等待时间才结束(抛出异常或者返回 None),如下例:
注意:当我们使用implicitly_wait()时,如果想要定位的元素已经找到,但是它的内容(如文本内容,属性等)没有加载出来,此时隐式等待无效,仍会直接抛出NoSuchElementException异常,这也是为什么我们很多时候仍需要使用time.sleep()的原因。 3.显示等待不同于隐式等待全局等待的方式,显示等待更加灵活,可以让我们针对某一个元素进行等待设置。 通过WebDriverWait类的until()和until_not()方法来实现。 ?until():条件为成立返回True,等待结束,如果超时,抛出TimeoutException异常。 ?until_not():条件不成立返回True,等待结束,如果超时,抛出TimeoutException。 实现如下: 导入模块
调用格式
func参数可以是自定义方法,也可以是webelement对象的方法,也可以是expected_conditions模块中方法,且一定要是可调用的(即该对象拥有__call__()方法),否则就会抛出如下异常: (1)自定义方法,通常借助匿名函数(lambda)来实现
?(2)调用webelement对象的方法,常用的有: ????????is_displayed():判断元素是否被展示出来 ????????is_enable():判断元素是否可操作 ????????is_select():判断元素是否被选择
(3)借助webdriver的expected_conditions模块,该模块中包含了一系列用于判断元素特征的方法,常见的有: ? ? ? ? title_is(str):判断当前页面的title是否精确等于预期,返回布尔值 ? ? ? ? title_contains(str):判断当前页面的title是否包含预期字符串,返回布尔值 ? ? ? ? presence_of_element_located(locator):判断某个元素是否被加到了DOM树中,返回元素对象 ? ? ? ? visibility_of_element_located(locator):判断某个元素是否可见,返回元素对象 ? ? ? ? invisibility_of_element_located(locator):判断某个元素是否不可见,返回元素对象 ? ? ? ? element_to_be_clickable(locator):判断某个元素是否是enable的,返回元素对象 ????????text_to_be_present_in_element(locator,str):判断某个元素是否包含了预期文本,返回布尔值
|
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 4:44:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |