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中元类用法实例
Oct 10 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
python调用摄像头拍摄数据集
Jun 01 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
python matplotlib实现将图例放在图外
Apr 17 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
使用Python实现NBA球员数据查询小程序功能
Nov 09 Python
用python制作个视频下载器
Feb 01 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
三级下拉菜单的js实现代码
2011/05/23 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
微信小程序 POST请求的实例详解
2017/09/29 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
python中正则表达式 re.findall 用法
2018/10/23 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
测绘工程个人的自我评价
2013/11/10 职场文书
现金会计岗位职责
2013/12/05 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
班组长岗位职责
2014/03/03 职场文书
小学评语大全
2014/04/22 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书