当前位置: 移动技术网 > IT编程>脚本编程>Python > Expected conditions模块使用方法汇总代码解析

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

2020年08月14日  | 移动技术网IT编程  | 我要评论
一、expected_conditions模块是什么?是selenium的一个子模块,selenium.webdriver.support.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')

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网