WebDriverWait等设置等待时间和超时时间

1.显示等待

等待页面加载完成,找到某个条件发生后再继续执行后续代码,若是超过设置时间检测不到则抛出异常python

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)web

——driver:WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)数组

——timeout:最长超时时间,默认以秒为单位app

——poll_frequency:休眠时间的间隔(步长)时间,默认为 0.5 秒异步

——ignored_exceptions:超时后的异常信息,默认状况下抛 NoSuchElementException 异常async

——如1:element = WebDriverWait(driver, 10).until(lambda x : x.find_element_by_id("id"))测试

           element.send_keys("selenium")网站

——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“Id”))ui

            is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())spa

WebDriverWai()通常由 unit()或 until_not()方法配合使用:

——until(method, message=’’)      调用该方法提供的驱动程序做为一个参数,直到返回值不为 False。——until_not(method, message=’’)      调用该方法提供的驱动程序做为一个参数,直到返回值为 False。


from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver=webdriver.Firefox()
driver.get()
WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id("someId"))
#经过检查某个元素是否被加载来检查是否登陆成功,我认为当个黑盒子用就能够了。其中10的解释:10秒内每隔0.5毫秒扫描1次页面变化,直到指定的元素

2.隐示等待:implicitly_wait

# 至关于设置全局的等待,在定位元素时,对全部元素设置超时时间,超出了设置时间则抛出异常
# 隐式等待使得WebDriver在查找一个Element或者Element数组时,每隔一段特定的时间就会轮询一次DOM,若是Element或数组没有立刻被发现的话。
# 默认设置是0。
# 一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起做用。
driver = webdriver.Firefox()
driver.implicitly_wait(10)


3.强制等待
import time
time.sleep(10)

 4.设置超时:

pageLoadTimeout方法用来设置页面彻底加载的超时时间,彻底加载即页面所有渲染,异步同步脚本都执行完成。前面的文章都是使用get 方法登陆安居客网站,你们应该能感受到每次打开网页后要等很长一段时间才会进行下一步的操做,那是由于没有设置超时时间而get方法默认是等待页面所有加 载完成才会进入下一步骤,加入将超时时间设置为3S就会中断操做抛出异常

当页面加载后就会执行下面的操做了

setScriptTimeout设置异步脚本的超时时间,用法同pageLoadTimeout同样就再也不写了,异步脚本也就是有async属性的JS脚本,能够在页面解析的同时执行。

from selenium import webdriver  
d= webdriver.PhantomJS()  
d.set_page_load_timeout(10)  
d.set_script_timeout(10)#这两种设置都进行才有效,未测试

参考:

selenium设置元素发现超时等待时间-python

selenium webdriver—超时设置

selenium 超时设置/等待时间过长自动中止(python)

相关文章
相关标签/搜索