通过expected_conditions判断网页元素是否存在
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判断网页元素是否存在的更多相关文章
- Selenium(二十):expected_conditions判断页面元素
1. 判断元素(expected_conditons) 作为一个刚刚转到python开发的小朋友,在开发前只将前辈们封装的方法看了一遍,学了一边selenium基础.看到封装的方法有什么判断元素是否存 ...
- expected_conditions判断页面元素
expected_condtions提供了16种判断页面元素的方法: 1.title_is:判断当前页面的title是否完全等于预期字符串,返回布尔值 2.title_contains:判断当前页面的 ...
- selenium3 + python - expected_conditions判断元素
expected_conditions 类 title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值 title_contains : 判断当前页面的title是否包含预 ...
- expected_conditions模块提供了判断页面元素的16种方法
1.title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值2.title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值3.presenc ...
- jQuery网页元素拖拽插件
效果说明:配合已有CSS样式,载入插件后,网页元素可以随意在窗口内拖拽,设置了原位置半透明和拖拽半透明的效果选项,可根据需要选择.另外,当页面上有多个可拖拽元素时,可以载入另外一个用于设置z-inde ...
- jquery and js 判断一个元素是否存在
一.javascript中判断一个元素是否存在 if(document.getElementById('example')){ // do sth } 二.jquery中判断一个元素是否存在 < ...
- 判断DOM元素是否出现再浏览器窗口中
几乎所有的项目都要解决这样一个问题:判断一个元素是否出现在浏览器窗口中?因为通过它我们可以极大的优化项目的性能,进而提升用户的的体验.原生javasxript获取浏览器的滚动距离和可视窗口的高度 使用 ...
- selenium3+python3自动化测试学习之网页元素定位
selenium基础实战之定位网页元素技巧 selenium定位网页元素 find_element_by_id,find_element_by_name,find_element_by_class_n ...
- js判断网页是否加载完毕 包括图片
<script type="text/javascript" language="JavaScript"> //: 判断网页是否加载完成 docum ...
- JS判断网页是否在微信中打开/
JS判断网页是否在微信中打开,代码如下: <script type="text/javascript"> function is_weixn(){ var ua = n ...
随机推荐
- java入门与进阶-P1.3+P1.4
准备一个java编程软件 eclipse官网: Enabling Open Innovation & Collaboration | The Eclipse Foundation 他是一个免费 ...
- 线上排查:内存异常使用导致full gc频繁
线上排查:内存异常使用导致full gc频繁 问题系统 日常巡检发现,应用线上出现频繁full gc 现象 应用线上出现频繁full gc 排查过程 分析dump 拉dump文件:小插曲:dump时如 ...
- Solon 的插件热插拨管理机制(H-Spi)
插件热插拨管理机制,简称:H-Spi.是框架提供的生产时用的另一种高级扩展方案.相对E-Spi,H-Spi 更侧重隔离.热插热拨.及管理性. 应用时,是以一个业务模块为单位进行开发,且封装为一个独立插 ...
- 花1分钟配置远程DEBUG,开发效率翻倍,妹子直呼绝绝子
当把一个工程部署到远程服务器后有可能出现意想不到错误,日志打印过多或者过少都影响问题排查的效率,这个时候可以通过远程调试的方式快速定位bug,提升工作效率.本文主要讲解如何使用Idea开发工具进行远程 ...
- Linux命令篇 - tar 命令
tar GNU `tar' saves many files together into a single tape or disk archive, and can restore individu ...
- 电商网站Web自动化测试实战( 编写京东搜索脚本python+selenium框架)
电商网站Web自动化测试实战( 编写京东搜索脚本) 1,打开京东页 京东首页地址:https://www.jd.com/,故进入京东首页如下: 2,打开浏览器开发者模式 定位元素前需先打开浏览器开发者 ...
- Spring(Spring的读取外部资源- p 命名空间)
Spring读取外部资源 实际开发中,数据库的资源一般会单独保存起来.一般会保存到后缀为properties的文件中,方便维护和修改,如果Spring加载资源,就需要在spring.xml中读取pro ...
- Winform 程序多开
在使用应用程序的过程中,经常要求应用程序只能运行一次.如果发现重复开启,应从系统进程列表中搜索到已经开启的进程,并将该进程窗口移到最前端显示. 记录一下过程. 实现过程 在 Program.cs 文件 ...
- 病程极短(≤16周)的495例未分化关节炎患者随访2年的结局[EULAR2015_SAT0055]
病程极短(≤16周)的495例未分化关节炎患者随访2年的结局 SAT0055 TWO-YEAR OUTCOME IN 495 PATIENTS WITH UNDIFFERENTIATED ARTH ...
- 操作系统复习(updating)
操作系统复习(updating) 1.进程和线程的区别是什么? 1)调度:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位 2)拥有资源:不论是传统操作系统还是设有线程的操作系 ...