HTML框架 短视频开发 MongoDB npm安装 overflow 哨兵模式 html jquery ssh vue开发文档 jquery拼接字符串 oracle删除字段 数据库设计规范 monkey安装 string转16进制 python数据 python安装教程 python基础代码 eclipse安装python java基础编程 java获取当前ip java输出数组 java成员变量 java集成开发环境 java的多线程 js倒计时代码 wscript 安卓刷机精灵 php递归 什么是人肉搜索 类似迅雷的下载软件 无线网改密码 opengl版本过低 汉仪旗黑字体下载 产品修图 ansys安装 mysql定时备份 python去掉空格 cad合并成块 百小度
当前位置: 首页 > 学习教程  > 编程语言

webdriver中的等待 WebDriverWait()

2021/1/28 23:29:29 文章标签:

强制等待:sleep() import time sleep(5) #等待5秒 设置固定休眠时间,单位为秒。 由python的time包提供, 导入 time 包后就可以使用。 缺点:不智能,使用太多的sleep会影响脚本运行速度。 隐式等待:implicitly_wait() driver.implicitly_wai…

强制等待:sleep()
import time
sleep(5)  #等待5秒

设置固定休眠时间,单位为秒。 由python的time包提供, 导入 time 包后就可以使用。
缺点:不智能,使用太多的sleep会影响脚本运行速度。

隐式等待:implicitly_wait()
driver.implicitly_wait(10) #隐式等待10秒
 
由webdriver提供的方法,一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用,它不针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加载完成,才会执行下一个语句。如果超出了设置时间的则抛出异常。

缺点:当页面某些js无法加载,但是想找的元素已经出来了,它还是会继续等待,直到页面加载完成(浏览器标签左上角圈圈不再转),才会执行下一句。某些情况下会影响脚本执行速度。

显示等待:WebDriverWait()
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
 
需要通过from selenium.webdriver.support.wait import WebDriverWait导入模块

driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。
与until()或者until_not()方法结合使用
WebDriverWait(driver,10).until(method,message="")
调用该方法提供的驱动程序作为参数,直到返回值为True
 
WebDriverWait(driver,10).until_not(method,message="")
调用该方法提供的驱动程序作为参数,直到返回值为False
 
 

在设置时间(10s)内,等待后面的条件发生。如果超过设置时间未发生,则抛出异常。在等待期间,每隔一定时间(默认0.5秒),调用until或until_not里的方法,直到它返回True或False.

WebDriverWait与expected_conditions结合使用
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver,10,0.5)
element =waite.until(EC.presence_of_element_located((By.ID,"kw"),message="")
# 此处注意,如果省略message=“”,则By.ID外面是两层()
 
 

expected_conditions类提供的预期条件判断的方法

方法    说明
title_is    判断当前页面的 title 是否完全等于(==)预期字符串,返回布尔值
title_contains    判断当前页面的 title 是否包含预期字符串,返回布尔值
presence_of_element_located    判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见
visibility_of_element_located    判断元素是否可见(可见代表元素非隐藏,并且元素宽和高都不等于 0)
visibility_of    同上一方法,只是上一方法参数为locator,这个方法参数是 定位后的元素
presence_of_all_elements_located    判断是否至少有 1 个元素存在于 dom 树中。举例:如果页面上有 n 个元素的 class 都是’wp’,那么只要有 1 个元素存在,这个方法就返回 True
text_to_be_present_in_element    判断某个元素中的 text 是否 包含 了预期的字符串
text_to_be_present_in_element_value    判断某个元素中的 value 属性是否包含 了预期的字符串
frame_to_be_available_and_switch_to_it    判断该 frame 是否可以 switch进去,如果可以的话,返回 True 并且 switch 进去,否则返回 False
invisibility_of_element_located    判断某个元素中是否不存在于dom树或不可见
element_to_be_clickable    判断某个元素中是否可见并且可点击
staleness_of    等某个元素从 dom 树中移除,注意,这个方法也是返回 True或 False
element_to_be_selected    判断某个元素是否被选中了,一般用在下拉列表
element_selection_state_to_be    判断某个元素的选中状态是否符合预期
element_located_selection_state_to_be    跟上面的方法作用一样,只是上面的方法传入定位到的 element,而这个方法传入 locator
alert_is_present    判断页面上是否存在 alert
显示等待,自定义等待条件
#设置等待
wait = WebDriverWait(driver,10,0.5)
#使用匿名函数
wait.until(lambda diver:driver.find_element_by_id('kw'))
 

 


本文链接: http://www.dtmao.cc/news_show_650224.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?