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

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

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

(0)

相关推荐

  • PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法

    今天在写PHP程序的时候总是出现这样的错误:Parse error: syntax error, unexpected end of file in *.php on line *,然后我就根据提示,找到那个文件,然后错误中总是提示最后一行出错,我找到最后一行发现是</html>,晕的,这能有什么错误,找了好久才找到问题所在,拿来分享. 出现这个错误的原因就是语法错误,肯定是PHP程序的书写不规范造成,我后来一条一条看才发现,原来是PHP语句标识符错了,正常情况下应该是这样的:<?php

  • Vue项目报错:Uncaught SyntaxError: Unexpected token <

    遇到问题: 今天做一个 VUE 的项目,在引入第三方依赖的 JS 文件时,遇到了一个问题: 控制台的提示:Uncaught SyntaxError: Unexpected token < 按照提示进入文件,再看如下图: 仔细看了看 index.html 文件,发现原本我的 JS 文件是放在 /src/utils 文件夹下的,但引入 /src 和 /static 的文件是有区别的. 解决方案: 解决办法是将第三方依赖的 JS 文件放到 /static/utils 目录下,引入路径也改成:<scr

  • python出现"IndentationError: unexpected indent"错误解决办法

    python出现"IndentationError: unexpected indent"错误解决办法 Python是一种对缩进非常敏感的语言,最常见的情况是tab和空格的混用会导致错误,或者缩进不对 如下图中的代码: 以上代码中第一次运行可以正常运行 但是第二次运行时就报错了, 原因就是第二次再e之前加了一个空格" " 解决办法只要将e之前的空格删除即可 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • shell脚本报错:"[: =: unary operator expected"解决办法

    shell脚本报错:"[: =: unary operator expected"解决办法 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因.把语句改成这样就不会出错了. if [[ $S

  • vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错

    前言: 项目使用vue-cli版本2.9.3 ,vue-router使用webpackChunkName实现按需加载. BUG描述:该报错在项目上线一段时间后,有用户反映页面无法正常游览 (后面以问题1/问题2区分) 问题1.导航点击无法正常跳转,console打印:Error:Loading chunk {n} failed. 报错截图 问题2.页面全白,console打印:Uncaught SyntaxError:Unexpected token < 报错截图: 经过一番折腾,初步定位问题1

  • JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法

    本文实例讲述了JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法.分享给大家供大家参考,具体如下: Uncaught SyntaxError: Unexpected token ILLEGAL 未捕获的语法错误: 意想不到的非法令牌 如下图所示: 复制代码 代码如下: <input id="btn_0_4EAE4F474C91156086C0D4EA7E983C69C215B649" type="butt

  • JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法

    本文实例讲述了JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法.分享给大家供大家参考,具体如下: Uncaught SyntaxError: Unexpected token ) 以下代码引发了此异常: <div class="Hd_live_Sharediv left"> <a href="javascript:void()" onclick="loadLivePlayer('ud

  • UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY

    天有不测风云,机房断电或者电源有出现问题的时候,会造成死机或者直接断电的现象,这个是比较正常的情况了.这些莫名其妙的死机会造成邮件系统的错乱,错乱了可使用下面的步骤进行紧急检查一下,切记只可在紧急的情况下运行,否则可能会对系统造成危害. 方法/步骤 开机的时候有出现下面的界面,看提示有按CTRL+D继续,按了CTRL+D会重启,再次回到这个界面. 在此界面输入下root的密码.会进入到修复模式. 在修复模式下,输入命令fsck –y /dev/mapper/VolGroup-lv_root 这个

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

    一.expected_conditions模块是什么? 是Selenium的一个子模块,selenium.webdriver.support.expected_conditions 可以对网页上元素是否存在,可点击等等进行判断,一般用于断言或与WebDriverWait配合使用 二.expected_conditions模块简单应用 2.1 WebDriverWait与expected_conditions配合使用实例一 import os import time from selenium i

  • java操作xml的方法汇总及解析

    这篇文章主要介绍了java操作xml的方法汇总及解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一丶常用方法 主要有3个方面, 1读取xml文件, 2使用xpath根据指定路径获取某一节点数据 3, xml和java bean的转换 XmlUtils.java /** * 和cn.hutool.core.util.XmlUtil许多功能重合, 本类可以当做学习的例子 * 可以直接使用cn.hutool.core.util.XmlUtil *

  • java字符串的截取方法substring()代码解析

    这篇文章主要介绍了java字符串的截取方法substring()代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 返回位于 String 对象中指定位置的子字符串. public class StringTest { public static void main(String[] args) { String name="jason"; System.out.println(name.substring(0,1)); //结果

  • python算法学习双曲嵌入论文方法与代码解析说明

    目录 1. 方法说明 损失函数 梯度下降 梯度求解 2. 代码训练过程 3. 结果表现 其他参考资料 本篇接上一篇:python算法学习双曲嵌入论文代码实现数据集介绍 1. 方法说明 首先学习相关的论文中的一些知识,并结合进行代码的编写.文中主要使用Poincaré embedding. 对应的python代码为: def dist1(vec1, vec2): # eqn1 diff_vec = vec1 - vec2 return 1 + 2 * norm(diff_vec) / ((1 -

  • 基于Python下载网络图片方法汇总代码实例

    本文介绍下载python下载网络图片的方法,包括通过图片url直接下载.通过re/beautifulSoup解析html下载以及对动态网页的处理等. 通过pic_url单个/批量下载 已知图片url,例如http://xyz.com/series-*(1,2..N).jpg,共N张图片,其链接形式较为固定,这样经简单循环,直接通过`f.write(requests.get(url).content)'即可以二进制形式将图片写入. import os import requests def dow

  • JS常用排序方法实例代码解析

    有些代码一两个月都会忘了,有空多做下总结,记录下来,等需要用到的时候可以来翻翻总结的博客.写技术博客,对自己是一种总结,对别人,是一种参考. 1.sort()方法 var ar1=[2,4,6,8,1,3] var ar2=[2,16,36,8,56] ar1.sort() ar2.sort()//这个方法值只能排序第一位数 也可以字符串进行排序 console.log(ar1)//[1,2,3,4,6,8] console.log(ar2)//[16, 2, 36, 56, 8] ar2.so

  • Python pathlib模块使用方法及实例解析

    pathlib 模块中包含的是一些类,它们的继承关系如图 1 所示. 图 1 pathlib模块中类的组织结构 图 1 中,箭头连接的是有继承关系的两个类,以 PurePosixPath 和 PurePath 类为例,PurePosizPath 继承自 PurePath,即前者是后者的子类. pathlib 模块的操作对象是各种操作系统中使用的路径(例如指定文件位置的路径,包括绝对路径和相对路径).这里简单介绍一下图 1 中包含的几个类的具体功能: PurePath 类会将路径看做是一个普通的字

  • Python卸载模块的方法汇总

    easy_install 卸载 通过easy_install 安装的模块可以直接通过  easy_install -m PackageName 卸载,然后删除\Python27\Lib\site-packages目录下的egg. setup.py 卸载 通过发行包附带的setup.py安装的模块,首选setup.py提供的uninstall选项.如果作者没有提供uninstall选项,则通过如下命令行手动卸载: 首先获取安装过程中产生的文件: python setup.py install --

  • python在不同层级目录import模块的方法

    使用python进行程序编写时,经常会使用第三方模块包.这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入.不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用:为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用.本篇就针对常见的模块调用方法汇总下. 一.同级目录下的调有 程序结构如下: -- src     |-- mod1.p

  • Python 高级教程之线程进程和协程的代码解析

    目录 进程 进程 5 种基本状态 进程的特点 进程间数据共享 进程池 进程的缺点 线程 线程的定义 使用线程模块的简单示例 代码解析 协程 协程与线程 Python 协程 协程的执行 关闭协程 链接协程以创建管道 总结 进程 进程是指在系统中正在运行的一个应用程序,是 CPU 的最小工作单元. 进程 5 种基本状态 一个进程至少具有 5 种基本状态:初始态.就绪状态.等待(阻塞)状态.执行状态.终止状态. 初始状态:进程刚被创建,由于其他进程正占有CPU资源,所以得不到执行,只能处于初始状态.

随机推荐