有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间。
sleep等待固定时间
python 的time 包提供了休眠方法sleep() ,导入time 包后就可以使用sleep()进行脚本的执行过程进行休眠。
implicitly_wait()
是webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。
WebDriverWait():
同样也是webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。需要导入WebDriverWait类。
WebDriverWai()一般由unit()或until_not()方法配合使用,下面是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('http://ww.baidu.com')
driver.maximize_window()
# 等待kw元素的出现,最长等待10秒
element = WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id('kw'))
element.send_keys("java")
# 等待su元素出现,最长等待30秒
driver.implicitly_wait(30)
driver.find_element_by_id('su').click()
time.sleep(30)
driver.quit()