expected_conditions模块:

  • 是Selenium的一个子模块,selenium.webdriver.support.expected_conditions

  • 可以对网页上元素是否存在进行判断,一般用于断言或与WebDriverWait配合使用

     1 import time
    2 from selenium import webdriver
    3 from selenium.webdriver.support.wait import WebDriverWait
    4 from selenium.webdriver.support import expected_conditions as EC
    5 from selenium.webdriver.common.by import By
    6
    7
    8 class Expected_Conditions:
    9 # expected_conditions模块用法汇总
    10 def __init__(self):
    11 self.driver = webdriver.Chrome()
    12 self.driver.get("https://www.baidu.com")
    13 self.driver.maximize_window()
    14 time.sleep(2)
    15 # 判断当前页面的title
    16 WebDriverWait(self.driver, 2).until(EC.title_is("百度一下,你就知道"))
    17 # 判断定位元素
    18 element = WebDriverWait(self.driver, 2).until(EC.visibility_of(self.driver.find_element(By.ID, 'kw')))
    19 element.send_keys('中彦引擎')
    20 time.sleep(2)
    21
    22 # 判断当前页面的title是否包含预期字符串,返回布尔值
    23 WebDriverWait(self.driver, 10).until(EC.title_contains('new'))
    24
    25 # 判断当前页面的url是否精确等于预期,返回布尔值
    26 WebDriverWait(self.driver, 10).until(EC.url_contains('https://www.baidu.com'))
    27
    28 # 判断当前页面的url是否包含预期字符串,返回布尔值
    29 WebDriverWait(self.driver, 10).until(EC.url_contains('baidu'))
    30
    31 # 判断当前页面的url是否满足字符串正则表达式匹配,返回布尔值
    32 WebDriverWait(self.driver, 10).until(EC.url_matches('.+baidu.+'))
    33
    34 # 判断元素是否出现,只要有一个元素出现,返回元素对象
    35 WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, 'kw')))
    36
    37 # 判断元素是否可见,返回元素对象
    38 WebDriverWait(self.driver, 10).until(EC.visibility_of(self.driver.find_element(By.ID, 'kw')))
    39
    40 # 判断元素是否包含指定文本,返回布尔值
    41 WebDriverWait(self.driver, 10).until(EC.text_to_be_present_in_element((By.NAME, 'tj_trnews'), '新闻'))
    42
    43 # 判断该是否可以switch进去,如果可以的话,返回True并且switch进去
    44 WebDriverWait(self.driver, 10, ).until(EC.frame_to_be_available_and_switch_to_it(By.XPATH, '// '))
    45
    46 # 判断某个元素是否可见并且是可点击的,如果是的就返回这个元素,否则返回
    47 WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.NAME, 'tj_trnews')))
    48
    49 # 判断某个元素是否被选中,一般用在下拉列表
    50 WebDriverWait(self.driver, 10).until(
    51 EC.element_to_be_selected(self.driver.find_element(By.XPATH, '//input[@type="checkbox"]')))
    52
    53 # 判断页面上是否存在
    54 WebDriverWait(self.driver, 10).until(EC.alert_is_present())
    55
    56 self.driver.quit()
    57
    58
    59 if __name__ == "__main__":
    60 Expected_Conditions()

通过expected_conditions判断网页元素是否存在的更多相关文章

  1. Selenium(二十):expected_conditions判断页面元素

    1. 判断元素(expected_conditons) 作为一个刚刚转到python开发的小朋友,在开发前只将前辈们封装的方法看了一遍,学了一边selenium基础.看到封装的方法有什么判断元素是否存 ...

  2. expected_conditions判断页面元素

    expected_condtions提供了16种判断页面元素的方法: 1.title_is:判断当前页面的title是否完全等于预期字符串,返回布尔值 2.title_contains:判断当前页面的 ...

  3. selenium3 + python - expected_conditions判断元素

    expected_conditions 类 title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值 title_contains : 判断当前页面的title是否包含预 ...

  4. expected_conditions模块提供了判断页面元素的16种方法

    1.title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值2.title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值3.presenc ...

  5. jQuery网页元素拖拽插件

    效果说明:配合已有CSS样式,载入插件后,网页元素可以随意在窗口内拖拽,设置了原位置半透明和拖拽半透明的效果选项,可根据需要选择.另外,当页面上有多个可拖拽元素时,可以载入另外一个用于设置z-inde ...

  6. jquery and js 判断一个元素是否存在

    一.javascript中判断一个元素是否存在 if(document.getElementById('example')){ // do sth } 二.jquery中判断一个元素是否存在 < ...

  7. 判断DOM元素是否出现再浏览器窗口中

    几乎所有的项目都要解决这样一个问题:判断一个元素是否出现在浏览器窗口中?因为通过它我们可以极大的优化项目的性能,进而提升用户的的体验.原生javasxript获取浏览器的滚动距离和可视窗口的高度 使用 ...

  8. selenium3+python3自动化测试学习之网页元素定位

    selenium基础实战之定位网页元素技巧 selenium定位网页元素 find_element_by_id,find_element_by_name,find_element_by_class_n ...

  9. js判断网页是否加载完毕 包括图片

    <script type="text/javascript" language="JavaScript"> //: 判断网页是否加载完成 docum ...

  10. JS判断网页是否在微信中打开/

    JS判断网页是否在微信中打开,代码如下: <script type="text/javascript"> function is_weixn(){ var ua = n ...

随机推荐

  1. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(5)-Charles如何设置捕获Https会话

    1.简介 在大数据时代,互联网时代,个人信息安全尤为重要,网络安全在近日多起电信诈骗事情发酵下的情况下,引起国家,企业,个人对于互联网安全进一步的重视.而之前很多以http协议传输的网站出现的网站信息 ...

  2. Quartz.Net源码Example之Quartz.Examples.AspNetCore

    Quartz.Examples.AspNetCore ​ .NetCore的Web系统,后台主要执行多个触发器任务,前台展示所有触发器信息和正在执行的作业的相关信息,还可以通过访问health-UI来 ...

  3. 《Terraform 101 从入门到实践》 第一章 Terraform初相识

    <Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 初闻不知Terraform, ...

  4. C-02\规范及随机数rand()原理

    小知识点 assert()函数 assert 断言函数,用于在调试过程中捕捉程序的错误.对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序 ...

  5. maven项目构建报错:Could not find artifact com.xxx.cloud:xxx-cloud:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM

    maven多模块项目打包的时候报错如下: [ERROR] [ERROR] Some problems were encountered while processing the POMs: [FATA ...

  6. python3中,len()、isalpha()、isspace()、isdigit()、isalnum()实例

    # 实例:使用while循环 import string s1 = input('请输入一个字符串:\n') letters = 0 space = 0 digit = 0 others = 0 i  ...

  7. POJ1737 连通图

    一句话题意:求一个 \(n\) 点带编号的连通图数量. 吐槽一下:好好一道计数 dp 为什么不加取余????逼着选手写高精度的出题人应该拎出去烧--哦楼天城是出题人是吧哦当我没说我什么都没说我现在就把 ...

  8. CentOS7一键安装RPM版LNMP(NGINX+PHP+MySQL)环境

    转载:简书 CentOS7一键安装RPM版LNMP(NGINX+PHP+MySQL)环境 - 简书 (jianshu.com) (需要配置nginx.conf文件) 转载:csdn (35条消息) V ...

  9. [EULAR文摘] 新证据: NSAID对AS放射学进展的影响

    新证据: NSAID对AS放射学进展的影响 Sieper J, et al. EULAR 2015. Present ID: OP0145. 背景: 既往有研究显示持续给予NSAID相较于按需给药能在 ...

  10. div 元素内容超出可通过鼠标滚轮实现横向滚动

    移动端中的元素内容超出时,对容器设置overflow-x: auto就可以通过手势水平移动.但是 PC 端只能通过鼠标滚轮上下滑动,而不能水平移动. 只需要给元素添加一个监听鼠标滚轮事件,上下滑动时修 ...