前言 行动是成功的阶梯,行动越多,登得越高。 不能懒,继续多更新分享一些给大家~~ 一、expected_conditions模块是什么? 是Selenium的一个子模块,selenium.webdriver.support.expected_conditions 可以对网页上元素是否存在,可点击等等进行判断,一般用于断言或与WebDriverWait配合使用 二、expected_conditions模块简单应用 2.1 WebDriverWait与expected_conditions配合使用实例一 import os import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('https://www.baidu.com') # 等待10s,等待过程中判断网页标题是否是"百度一下,你就知道" # 如果是就继续执行后续代码,反之等待10s结束时报错 WebDriverWait(driver,10).until(EC.title_is("百度一下,你就知道")) 2.2 WebDriverWait与expected_conditions配合使用实例二 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('https://www.baidu.com') #等待10s,等待过程中如果定位到元素,就直接执行后续的代码,反之等待10s后报错误信息 element = WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(By.ID,'kw'))) element.send_keys( '新梦想软件测试' ) 2.3 unittest与expected_conditions配合使用实例 import time import unittest from selenium import webdriver from selenium.webdriver.support import expected_conditions as EC class TestDemo(unittest.TestCase): def setUp(self) : self.driver = webdriver.Chrome() def tearDown(self): time.sleep(2) self.driver.quit() def test_searchinputbox_is_visibility(self): self.driver.get('https://www.baidu.com') #EC.visibility_of()判断元素是否可见,如果可见就返回这个元素 self.assertTrue(EC.visibility_of(self.driver.find_element(By.ID,'kw'))) if __name__=='__main__': unittest.main() 实例小结: 实例一与实例二中用到了显式等待 WebDriverWait类,该块不在此文中介绍; 实例三中self.assertTrue()方法断言括号内的表达式返回值是否为ture,在python中代表true的为 非0、非空、true,而EC.visibility_of()方法中的定位方法能定位到元素就会返回一个对象,满足非空为true,所以断言会通过; 注意EC.visibility_of()方法返回的对象非真实元素对象,所以不能执行如下代码:(正确方式参照实例二的写法) element = EC.visibility_of(self.driver.find_element(By.ID,'kw')) element.send_keys('newdream') 三、expected_conditions模块用法汇总(不定期更新) #判断当前页面的title是否精确等于预期,返回布尔值 WebDriverWait(driver,10).until(EC.title_is("百度一下,你就知道")) #判断当前页面的title是否包含预期字符串,返回布尔值 WebDriverWait(driver,10).until(EC.title_contains('new')) #判断当前页面的url是否精确等于预期,返回布尔值 WebDriverWait(driver,10).until(EC.url_contains('https://www.baidu.com')) #判断当前页面的url是否包含预期字符串,返回布尔值 WebDriverWait(driver,10).until(EC.url_contains('baidu')) #判断当前页面的url是否满足字符串正则表达式匹配,返回布尔值 WebDriverWait(driver,10).until(EC.url_matches('.+baidu.+')) #判断元素是否出现,只要有一个元素出现,返回元素对象 WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw'))) #判断元素是否可见,返回元素对象 WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(By.ID,'kw'))) #判断元素是否包含指定文本,返回布尔值 WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.NAME,'tj_trnews'),'新闻')) #判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去 WebDriverWait(driver,10,).until(EC.frame_to_be_available_and_switch_to_it(By.xpath,'//iframe')) #判断某个元素是否可见并且是可点击的,如果是的就返回这个元素,否则返回False WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME,'tj_trnews'))) #判断某个元素是否被选中,一般用在下拉列表 WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.xpath,'//input[@type="checkbox"]'))) #判断页面上是否存在alert,如果有就切换到alert并返回alert的内容 WebDriverWait(driver,10).until(EC.alert_is_present()) #还有不少,用到了继续更新...... 备注:以上整理大家要注意参数和返回值,部分参数是元素对象,部分是locator的元组,如(By.NAME,'tj_trnews')
好用的expected_conditions模块
来源:这里教程网
时间:2026-03-02 12:24:22
作者:
编辑推荐:
- 好用的expected_conditions模块03-02
- eclipse设置JVM内存堆03-02
- 检测SQLServer的阻塞与查看MSSQL会话信息03-02
- iso文件怎么运行安装(手把手教你运行安装iso文件)03-02
- 服务器上的Mgmt接口是用来干什么用的?03-02
- 电脑怎么设置广告拦截_windows自动弹出恶意广告怎么办03-02
- 赛博朋克2077本地存档保存替换方法图解详细教程03-02
- 5款非常好用的电脑软件03-02
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 检测SQLServer的阻塞与查看MSSQL会话信息
检测SQLServer的阻塞与查看MSSQL会话信息
26-03-02 - iso文件怎么运行安装(手把手教你运行安装iso文件)
iso文件怎么运行安装(手把手教你运行安装iso文件)
26-03-02 - 服务器上的Mgmt接口是用来干什么用的?
服务器上的Mgmt接口是用来干什么用的?
26-03-02 - 电脑怎么设置广告拦截_windows自动弹出恶意广告怎么办
电脑怎么设置广告拦截_windows自动弹出恶意广告怎么办
26-03-02 - 赛博朋克2077本地存档保存替换方法图解详细教程
赛博朋克2077本地存档保存替换方法图解详细教程
26-03-02 - 5款非常好用的电脑软件
5款非常好用的电脑软件
26-03-02 - SQLServer创建AlwaysOn加副本报错:副本之间的端点数据加密配置不兼容
- 海康威视DS-6900UD系列解码上墙设置方法图解详细教程
海康威视DS-6900UD系列解码上墙设置方法图解详细教程
26-03-02 - 体验【应用交付扫雷大作战】,得程序员专属帆布袋
体验【应用交付扫雷大作战】,得程序员专属帆布袋
26-03-02 - 我们常说的数据库优化,可以从哪些维度入手?
我们常说的数据库优化,可以从哪些维度入手?
26-03-02
