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 文件与目录操作
Dec 24 Python
小结Python用fork来创建子进程注意事项
Jul 03 Python
Python3读取zip文件信息的方法
May 22 Python
python抽取指定url页面的title方法
May 11 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
python实现桌面托盘气泡提示
Jul 29 Python
pip安装python库的方法总结
Aug 02 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
python中的列表和元组区别分析
Dec 30 Python
使用pytorch实现线性回归
Apr 11 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
php判断当前操作系统类型
2015/10/28 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
初识PHP中的Swoole
2016/04/05 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
python函数形参用法实例分析
2015/08/04 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
详解python做UI界面的方法
2019/02/27 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
python tkinter基本属性详解
2019/09/16 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
五年级英语教学反思
2014/01/31 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
企业党员公开承诺书
2014/03/26 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
会员活动策划方案
2014/08/19 职场文书
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫