通过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 ...
随机推荐
- DLL的两种加载方式
案例简述 在某项目中,需要使用两个不同版本的HCNetSDK库,我们通常使用的静态加载DLL的方式不能满足该需求,故用到动态加载DLL的方式. 背景技术及术语解释 静态加载:也称隐式调用,指在运行程序 ...
- SQL Case条件判断SQL
问题描述:在表中取到一些值做出判断,配合监控监测一些表中的数据.使用select case when if 来做条件查询判断 CASE 表达式遍历条件并在满足第一个条件时返回一个值(类似于 if-th ...
- 843. n-皇后问题
题目: 这 道 题 呢 唯 一 一 点 与 其 他 题 目 不 同 之 处 就 是 它 有 有 3 个 v i s 数 组 以及是一行一行深搜的. 主要思路为: 从第一行 到第n行,一行放一个,这一行 ...
- Rust Rand生成随机数
# in project file cargo add rand extern crate rand; use rand::Rng; fn main() { let mut rng = rand::t ...
- 重学SpringBoot. step6 SpringBoot高级技巧
SpringBoot高级技术 博客地址: step6 SpringBoot高级技巧 异步线程池 书上讲的是什么像异步操作那样,然后不需要等待. 问题是,不需要等待,但数据在生成的时候的时间并不能省. ...
- 嵌入式Linux—Framebuffer应用编程
Framebuffer 应用编程 Frame的意思是帧,buffer的意思是缓冲区.Framebuffer就是一块内存(硬件设备),里面保存着一帧图像. ioctl()函数解析 ioctl()函数非常 ...
- 力扣每日一题2023.1.16---1813. 句子相似性 III
一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格.比方说,"Hello World" ,"HELLO" ,"hello w ...
- 使用brew安装历史版本的几种方式
背景 在 mac osx 下, 大部分的软件都是使用 homebrew 进行管理的, 可以方便的进行软件的安装,更新,删除等等, 大部分情况下 homebrew 的仓库只会存在一份最新的软件版本, 有 ...
- vue组件的对象式写法,vue中的h函数
render:将虚拟dom转为真实dom h函数:创建的是vnode,也可以成为createVnode函数 语法:h(元素名称 ,这个元素的数据,子集) 第一个参数:可以为一个html标签,一个组件, ...
- JWT的原理及使用
目录 JWT的原理及使用 一.什么是JWT? 二.签发认证流程 三.使用方法 1.设置登录接口 2.设置过期事件 3.定制返回格式 4.配置认证类和权限类 5.写登录逻辑 5.配路由 JWT的原理及使 ...