您的位置:首页 > 其它

selenium2 webdriver 设置等待时间

2016-08-11 18:53 337 查看
受页面加载速度的影响,经常报“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'拒绝')))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: