selenium (四) WebDriverWait 与 expected_conditions
在介绍WebDriverWait之前,先说一下,在selenium中的两种等待页面加载的方式,
第一种是隐式等待,在webdriver里面提供的implicitly_wait()方法,
driver.implicitly_wait(30) #单位:秒
第二种是显示等待,是在support/wait中的WebDriverWait类中实现,可以根据需要
设置等待时间和每次等待的步长。
当前还有种等待方式,是Python自带time模块中的sleep()方法
这里就注重介绍 WebDriverWait 与 expected_conditions 结合来检查元素是否存在。
先看 WebDriverWait 中给出示例:
from selenium.webdriver.support.ui import WebDriverWait
element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("someId"))
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).\
until_not(lambda x: x.find_element_by_id("someId").is_displayed())
因为WebDriverWait是一个带参数构造类,调用时必须要传递参数(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
driver - (必选参数)是webDriver的实例
timeout - (必选参数)是设置等待超时时间,单位:秒;
poll_frequency - (非必选参数)是休眠时间,默认是0.5秒;
ignored_exceptions - (非必选参数)调用期间忽略异常类的可迭代结构
另外,在WebDriverWait下,还提供了两个方法until()、until_not():
这两个方法需要提供方法作为参数,所以可以结合expected_conditions中的方法或我们自己定义的方法/函数(带返回值)作为参数。
until():调用驱动程序提供的方法作为参数,直到返回值不是False。
until_not():调用驱动程序提供的方法作为参数,直到返回值为False。
以上面的例子解释执行的过程:
element = WebDriverWait(driver, 10,0.2).until(lambda x: x.find_element_by_id("someId"))
web_wait = WebDriverWait(driver,10,0.3) #实例化WebDriverWait类
element=web_wait.until(lambda element:element.find_element_by_id("kw")) #通过WebDriverWait类下的until()方法,调用lambda 函数,去获取元素,获取到则返回该元素。如果获取不到返回false则每0.3秒后,再次调用。直到10秒超时后则报异常。
element.send_keys("selenium") #对元素进行操作
上面介绍了selenium的WebDriverWait时,说过until和until_not的参数是一个方法,而selenium下有一个模块:expected_conditions模块,
可以结合until、until_not一起使用,也可以到达一样的效果。
title_is()类:检查页面的标题。title是预期的标题,必须是完全匹配,如果标题匹配则返回True,否则返回false。
print WebDriverWait(driver,5,0.5).until(title_is(u"百度一下,你就知道"))
title_contains()类:检查页面的标题。title是预期的标题,只要部分匹配则返回True,否则返回false
print WebDriverWait(driver,5,0.5).until(title_contains(u"百度一下"))
presence_of_element_located()类:期望检查DOM上是否存在元素一页 这并不一定意味着该元素是可见的,找到则返回该元素
link=WebDriverWait(driver,5,0.5).until(presence_of_element_located((By.ID,"kw")))
link.send_keys("selenium")
url_contains()类:期望检查当前URL是否包含部分内容,则返回True,否则返回false
print WebDriverWait(driver,5,0.5).until(url_contains("baidu.com"))
url_to_be()类:期望检查当前网址。url是否完全匹配的,如果url匹配则返回True,否则返回false。
WebDriverWait(driver,5,0.5).until(url_to_be("https://www.baidu.com/"))
visibility_of_element_located()类:期望检查元素是否存在于DOM的DOM上页面和可见。 可见性意味着不仅显示元素
email=WebDriverWait(driver,5,0.5).until(visibility_of_element_located((By.ID,"kw")))
email.send_keys("123@qq.com")
visibility_of()类:期望检查已知存在的元素页面的DOM是可见的。
WebDriverWait(driver,5,0.5).until(visibility_of((By.ID,"email")))
presence_of_all_elements_located()类:期望检查是否存在至少一个元素在网页上。返回WebElements列表
visibility_of_any_elements_located()类:期望检查至少有一个元素是可见的在网页上。返回WebElements列表
visibility_of_all_elements_located()类:期望检查所有元素是否存在于a的DOM上页面和可见。用于查找元素一旦找到并可见,就会返回WebElements列表
text_to_be_present_in_element()类:期望检查给定文本是否存在于指定的元素。
text_to_be_present_in_element_value()类:期望检查元素中是否存在给定文本定位器,文本
invisibility_of_element_located()类:用于检查元素是否不可见的期望出现在DOM上。
invisibility_of_element()类:检查元素是否不可见的期望出现在DOM上。
element_to_be_clickable()类:检查元素的期望是可见的并且已启用你可以点击它
staleness_of()类:等到元素不再附加到DOM。element是要等待的元素。如果元素仍附加到DOM,则返回False,否则返回true。
element_to_be_selected()类:选择检查选择的期望。element是WebElement对象
element_located_to_be_selected()类:选择对元素的期望。locator是(by,path)的元组
alert_is_present()类:检查是否出现alter面板
selenium (四) WebDriverWait 与 expected_conditions的更多相关文章
- Selenium 应用 WebDriverWait 和 expected_conditions(待验证)
收藏在我的收藏看不到,只能copy了,转载至http://www.cnblogs.com/yicaifeitian/p/4749149.html 哈哈,我始终相信贴出来总会有人看.WebDriverW ...
- Selenium 高阶应用之WebDriverWait 和 expected_conditions
Seleniium 是相当不错的一个第三方测试框架,可惜目前国内已经无法访问其官网(FQ可以). 不知道大家是否有认真查看过selenium 的api,我是有认真学习过的.selenium 的api中 ...
- Selenium(二十):expected_conditions判断页面元素
1. 判断元素(expected_conditons) 作为一个刚刚转到python开发的小朋友,在开发前只将前辈们封装的方法看了一遍,学了一边selenium基础.看到封装的方法有什么判断元素是否存 ...
- WebDriverWait与expected_conditions结合使用
expected_conditions判断页面元素 demo2 from selenium import webdriver from selenium.webdriver.support.ui im ...
- web自动化之selenium(四)元素等待
隐式等待 说明 隐式等待是通过设置一定时长的等待,让页面上的某些元素能过加载出来,如果超过了设置的时间还没有加载出来则抛出(NoSuchelementException异常),默认单位为"秒 ...
- selenium通过WebDriverWait实现ajax测试
selenium通过WebDriverWait实现ajax测试 AndroidDriver driver = new AndroidDriver(); driver.get("http:// ...
- selenium(七)expected_conditions EC
判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方法, 一.功能介绍和翻译 ...
- Selenium之WebDriverWait
转自https://blog.csdn.net/duzilonglove/article/details/78455051 Selenium之WebDriverWait用法
- selenium经过WebDriverWait实现ajax测试
当前位置:我的异常网» Web前端 » selenium经过WebDriverWait实现ajax测试 selenium经过WebDriverWait实现ajax测试 www.MyException. ...
随机推荐
- 企业框架-Spring
1.什么是Spring Spring是最受欢迎的企业级Java应用程序开发框架,数以百万的来自世界各地的开发人员使用Spring框架来创建性能好.易于测试.可重用的代码. Spring框架是一个开源的 ...
- python开发时小问题之端口占用
昨天开发时遇到个小问题: 在使用pycharm编写tornado代码时: 直接用这种方式开启了服务,当我想修改代码时发现端口已经被占用代码提交不上去 所以现在该关闭进程: 步骤一: 打开CMD 步骤二 ...
- cisco WLC开启portal认证,但是访问https无法跳转问题的解决
config network web-auth https-redirect enable版本8,及以上才支持 官方文档: http://www.cisco.com/c/zh_cn/support ...
- Web窗体--控件
服务器基本控件:button: text属性linkbutton:text属性,它是一个超链接模样的普通buttonhyperlink: navigateurl:链接地址,相当于<a>标签 ...
- Jenkins之邮件通知
Jenkins默认有一个邮件通知功能,但功能比较单一,能自定义的东西很少,一般使用Extended E-mail Notification插件来发送邮件,EXT Email插件功能比较多,但设置也比较 ...
- GLSL 的各种着色器效果
Site Defunct 注意!截止到 16/9/2019 ,这个博客已经被搬迁到了 这里 .以后我的东西都会发在那里.拜拜啦! GLSL 很牛逼 Vignette ScanLine Pixelate ...
- MyBatis之pageHelper分页插件
1.先导入Maven,jar包依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifa ...
- Python---7函数(调用&定义函数)
函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs(),只有一个参数.可以直接从Python的官方网站查看文档: http: ...
- 三星HTC价格跳水 安卓旗舰会否崩塌?
安卓旗舰会否崩塌?" title="三星HTC价格跳水 安卓旗舰会否崩塌?"> 官方降价,对于国产手机来说似乎是家常便饭.小米.魅族等,总会时隔几个月就将自家旗舰机 ...
- 查漏补缺:Linux进程与线程的区别
1.概念的区别 进程:是具有独立功能的程序在一个数据集合上运行的过程,是系统进行资源分配的基本单位,也是调度运行的基本单位.一个进程中可以包含多个线程. 线程:是进程的一个实体,是CPU调度和分派的基 ...