sleep()
:设置固定休眠时间。python 的 time 包提供了休眠方法 sleep() ,导入time 包后就可以使用 sleep() 进行脚本的执行过程进行休眠。
implicitly_wait()
:是 webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。
WebDriverWait()
:同样也是webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。
#coding=utf-8
from selenium import webdriver
#导入WebDriverWait 包
from selenium.webdriver.support.ui import WebDriverWait
#导入time 包
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#WebDriverWait()方法使用
element=WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("kw"))
element.send_keys("selenium")
#添加智能等待
driver.implicitly_wait(30)
driver.find_element_by_id("su").click()
#添加固定休眠时间
time.sleep(5)
driver.quit()
sleep()
sleep()
方法以秒为单位,假如休眠时间小时1 秒,可以用小数表示。
implicitly_wait()
implicitly_wait()
方法比sleep()
更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
WebDriverWait()
详细格式如下:
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver
- WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
timeout
- 最长超时时间,默认以秒为单位
poll_frequency
- 休眠时间的间隔(步长)时间,默认为0.5 秒
ignored_exceptions
- 超时后的异常信息,默认情况下抛NoSuchElementException
异常。
from selenium.webdriver.support.ui import WebDriverWait
....
element = WebDriverWait(driver, 10).until(lambda x:x.find_element_by_id(“someId”))
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())
WebDriverWai()
一般由until()
或until_not()
方法配合使用,下面是unit()
和until_not()
方法的说明。
until(method, message=’ ’)
调用该方法提供的驱动程序作为一个参数,直到返回值不为False。
until_not(method, message=’ ’)
调用该方法提供的驱动程序作为一个参数,直到返回值为False。