selenium2 webdriver 设置等待时间

受页面加载速度的影响,经常报“Unable to locate element”的错误。
为了保证脚本运行的稳定性,需要脚本中添加等待时间。 ####1.sleep()-----固定休眠 sleep():设置固定休眠时间。 python的time包提供了休眠方法sleep() ,导入time包后就可以使用sleep()进行脚本的执行过程进行休眠。

#import time
time.sleep(3)   #休眠3秒

####2.implicitly_wait()-----隐式等待 implicitly_wait():是 webdirver 提供的一个超时等待。隐式等待一个元素被发现,或一个命令完成。 如果超出了设置时间的则抛出异常。
####举个栗子:implicitly_wait(10) 这10秒并非一个固定的等待时间,且不针对页面上的某个元素进行等待。当脚本指定到某个元素定位时,如元素可定位,则继续执行;如果元素定位不到,则将以轮询的方式不断地判断元素是否被定位到。假设在第5秒定位到了某元素则继续执行,如超出了设置的10秒,则抛出异常NoSuchElementException。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException

driver.implicitly_wait(20) #等待20秒

####3.WebDriverWait()-----显式等待 WebDriverWait():也是 webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前 页面元素是否存在,如果超过设置时间检测不到则抛出异常。
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程),浏览器驱动
timeout - 最长超时时间,默认以秒为单位
poll_frequency - 休眠时间的间隔(步长)时间,默认为 0.5 秒
ignored_exceptions - 超时后的异常信息,默认情况下抛 NoSuchElementException 异常。

WebDriverWait方法一般要和until或until_not()方法配合使用
比如:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions 

  #等到该元素显示后才执行下一步
element = WebDriverWait(self.driver,10)\
		.until(expected_conditions.element_to_be_clickable((By.LINK_TEXT,u'拒绝')))
           

转载于:https://my.oschina.net/cym92/blog/731347

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值