一、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')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】