Expected conditions模块使用方法汇总代码解析


Posted in Python onAugust 13, 2020

一、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')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
mac PyCharm添加Python解释器及添加package路径的方法
Oct 29 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
python手写均值滤波
Feb 19 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
基于Python快速处理PDF表格数据
Jun 03 Python
Python数据可视化实现多种图例代码详解
Jul 14 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
深入了解Python装饰器的高级用法
Aug 13 #Python
python高级特性简介
Aug 13 #Python
Pytest如何使用skip跳过执行测试
Aug 13 #Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 #Python
Python logging模块原理解析及应用
Aug 13 #Python
matplotlib基础绘图命令之imshow的使用
Aug 13 #Python
使用jupyter notebook运行python和R的步骤
Aug 13 #Python
You might like
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
Django中的Signal代码详解
2018/02/05 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
pandas 数据类型转换的实现
2020/12/29 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
五四青年节演讲稿
2014/05/26 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
5s标语大全
2014/06/23 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
单方投资意向书
2015/05/11 职场文书
五年级作文之想象作文
2019/10/30 职场文书