在上一章python 爬虫前奏五 webdriver中的等待中简单的提过WebDriverWait与expected_conditions结合使用,但是这个是需要详细了解的

内容来源于互联网,这里仅做笔记和参考用

一、Expected Conditions 用法详解

首先添加包

from selenium.webdriver.support import expected_conditions as EC

1、判断当前页面的 title 是否等于预期值

title_is( String title)

2、判断当前页面的 title 是否包含预期值

title_contains( String title)

3、判断当前页面的url是否等于预期值

url_to_be( String url)

4、判断当前页面的url是否包含预期字符串

url_contains( String fraction) 

5、字符串正则表达式

url_matches( String regex) 

6、判断元素是否出现,只要有一个元素出现,就通过。

presence_of_element_located( By locator) 

7、判断元素是否出现,必须所有符合条件的元素都加载出来,才通过。

presence_of_elements_located( By locator) 

8、如果给定元素是可见的且具有非零大小,否则为null

element_if_visible(WebElement element) 

9、判断元素是否出现。

presence_of_all_elements_located_by( By locator) 

10、传入类型为:locator 判断某个元素是否可见

visibility_of_element_located( By locator) 

11、判断某组元素是否可见

visibility_of_all_elements_located_by( By locator) 

12、传入类型为:element 判断某个元素是否可见.

visibility_of_all_elements(final List<WebElement> elements) 

13、判断某个元素中的text是否包含了预期的字符串;

text_to_be_present_in_element( WebElement element,  String text) 

14、判断某个元素中的 text 是否 包含 了预期的字符串

text_to_be_present_in_element(By locator, String text) 

15、判断某个元素中的 text 是否 包含 了预期的字符串

text_to_be_present_in_element_located(final By locator, final String text)

16、判断某个元素中的 value 属性是否包含 了预期的字符串

text_to_be_present_in_element_value( WebElement element, String text)

17、判断某个元素中的 value 属性是否包含 了预期的字符串

text_to_be_present_in_element_value(final By locator, final String text) 

18、判断该 frame 是否可以 switch进去

frame_to_be_available_and_switch_to_it(final String frameLocator) 

19、判断该 frame 是否可以 switch进去

frame_to_be_available_and_switch_to_it(final By locator) 

20、某个元素中是否不存在于dom树或不可见;

invisibility_of_element_located(final By locator) 

21、判断带有文本的元素要么不可见,要么文本不存在于元素上

invisibility_of_element_with_text(final By locator, final String text)

22、判断某个元素中是否可见并且是enable的,这样的话才叫clickable

element_to_be_clickable(final By locator) 

23、判断某个元素中是否可见并且是enable的,这样的话才叫clickable

element_to_be_clickable(final WebElement element) 

24、判断一个元素是否仍在DOM中或等待从dom中移除,传入WebElement对象,可以判断页面是否刷新了,注意,这个方法是返回True或False

staleness_of(final WebElement element) 

25、判断一个元素是否仍在DOM中,传入WebElement对象,可以判断页面是否刷新

refreshed(final ExpectedCondition<T> condition) 

26、判断某个元素是否被选中了,一般用在下拉列表

element_to_be_selected(WebElement element)

27、判断某个元素是否被选中了,一般用在下拉列表;

element_to_be_selected(By locator) 

28、判断某个元素的选中状态是否符合预期,传入element

element_selection_state_to_be( WebElement element,  boolean selected) 

29、判断某个元素的选中状态是否符合预期,传入locator

element_selection_state_to_be(final By locator, final boolean selected) 

30、判断页面上是否存在alert。

alert_is_present() 

二、使用示例


#encoding:utf-8
# example of how to use https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/support/expected_conditions.pyfrom selenium.webdriver.support import expected_conditions as ECdr = webdriver.Chrome()
url = 'http://www.baidu.com'
search_text_field_id = 'kw'
dr.get(url)class ECExample(unittest.TestCase):def test_title_is(self):''' 判断title是否符合预期 '''title_is_baidu = EC.title_is(u'百度一下,你就知道')self.assertTrue(title_is_baidu(dr))def test_titile_contains(self):''' 判断title是否包含预期字符 '''title_should_contains_baidu = EC.title_contains(u'百度')self.assertTrue(title_should_contains_baidu(dr))def test_presence_of_element_located(self):''' 判断element是否出现在dom树 '''locator = (By.ID, search_text_field_id)search_text_field_should_present = EC.visibility_of_element_located(locator)''' 动态等待10s,如果10s内element加载完成则继续执行下面的代码,否则抛出异常 '''WebDriverWait(dr, 10).until(EC.presence_of_element_located(locator))WebDriverWait(dr, 10).until(EC.visibility_of_element_located(locator))self.assertTrue(search_text_field_should_present(dr))def test_visibility_of(self):search_text_field = dr.find_element_by_id(search_text_field_id)search_text_field_should_visible = EC.visibility_of(search_text_field)self.assertTrue(search_text_field_should_visible('yes'))def test_text_to_be_present_in_element(self):text_should_present = EC.text_to_be_present_in_element((By.NAME, 'tj_trhao123'), 'hao123')self.assertTrue(text_should_present(dr))@classmethoddef tearDownClass(kls):print 'after all test'dr.quit()print 'quit dr'if __name__ == '__main__':

python 爬虫前奏六 ExpectedConditions用法大全相关推荐

  1. Python爬虫十六式 - 第三式:Requests的用法

    Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...

  2. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  3. Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery

    PyQuery:一个类似jquery的python库 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 BeautifulSoup 美味 ...

  4. Python 爬虫十六式 - 第七式:RE:用匹配来演绎编程的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...

  5. Python 爬虫十六式 - 第七式:正则的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一 ...

  6. Python爬虫十六式 - 第四式: 使用Xpath提取网页内容

    Xpath:简单易用的网页内容提取工具 学习一时爽,一直学习一直爽 !   Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 requests 的使用方法.到上节课为止, ...

  7. Python 爬虫十六式 - 第一式:HTTP协议

    HTTP:伟大而又无闻的协议 学习一时爽,一直学习一直爽!   Hello,大家好啊,我是Connor,一个从无到有的技术小白.有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协 ...

  8. Python 爬虫十六式 - 第八式:实例解析-全书网

    实例解析- 全书网 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.前面我们就算是把所有的网页访问与网页解析的方法给大家讲完了.为了帮助大家更好的使用这些 ...

  9. Python 爬虫十六式 - 第八式:实例解析 - 全书网

    实例解析- 全书网 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.前面我们就算是把所有的网页访问与网页解析的方法给大家讲完了.为了帮助大家更好的使用这些 ...

最新文章

  1. css中绝对定位中的left和top属性
  2. SmartAuditor----IT访问审计解决方案
  3. nginx 配置文件解释及优化安全
  4. 用户操作-登录代码实现
  5. note header initialization discussion
  6. Java 8备忘单中的可选
  7. jenkins+svn+maven+ssh 部署配置详细记录
  8. 详解数据治理相关的7个术语和名词
  9. Linux系统:centos7下搭建ElasticSearch中间件,常用接口演示
  10. 虚拟CentOS访问Windows下共享文件(二)
  11. 带宽检测工具iftop
  12. easyui datagrid加载本地数据和网络数据
  13. 使用Kotlin的Android ToggleButton
  14. [MacOS 10.15.5 ] building for macOS-x86_64 but attempting to link with file built for macOS-x86
  15. Selina现身代言发福 手臂上伤疤明显
  16. 10年后的GOOGLE会怎么样
  17. 《雍正皇帝·九王夺嫡》物质文化专有词泰译研究(二)
  18. 测序数据分析之OTU
  19. oracle unable to open file,ORA-27041:unable to open file
  20. 晨曦记账本快速搜索收支账的基础操作

热门文章

  1. 用友NC BeanShell_未授权RCE
  2. 架构师接龙:盛大许式伟VS. 金山张宴
  3. 活动报名丨“香港科大商学院-黑瞳科技”2020【人工智能】百万奖金国际创业大赛--成都站宣讲会...
  4. 【智能制造】制造业转型升级:上、看见四化,中、转型升级四大象限,下、通用策略与升级路径
  5. flink实战教程-使用set实时计算当天网站uv
  6. Fully Convolutional Networks for Semantic Segmentation----2014CVPR FCN论文解读
  7. Unable to execute HTTP request:The request signature we calculated does not match the signature you
  8. Eclipse启动运行项目Debug弹窗:This kind of launch is configured to openthe debug perspective when it解决办法
  9. 关于计算机图形学的书籍推荐
  10. mysql if countif_通配符+countif()解决大于15位数的计数问题