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 05 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
基于keras中的回调函数用法说明
Jun 17 Python
python属于软件吗
Jun 18 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
python反编译教程之2048小游戏实例
Mar 03 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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轻松实现中英文混排字符串截取
2014/05/28 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
Python实现针对中文排序的方法
2017/05/09 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
PyQt5 多窗口连接实例
2019/06/19 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
python判断是空的实例分享
2020/07/06 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
EJB的激活机制
2013/10/25 面试题
优秀小学生家长评语
2014/01/30 职场文书
高考励志标语
2014/06/05 职场文书
新闻学专业求职信
2014/07/28 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
公司2015年终工作总结
2015/05/26 职场文书
音乐研修感悟
2015/11/18 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL