设置等待时间
1、WebDriverWait()——显式等待
一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码。
需要导入WebDriverWait包
#导入 WebDriverWait 包 from selenium.webdriver.support.ui import WebDriverWait
2、implicitly_wait()——隐式等待
相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。
隐式等待一个元素被发现或一个命令完成。如果超出了设置时间则抛出异常。
3、sleep()——强制等待
设置固定休眠时间
#导入 time 包 import time
4、练习
1 #coding=utf-8 2 from selenium import webdriver 3 4 #导入 WebDriverWait 包 5 from selenium.webdriver.support.ui import WebDriverWait 6 7 #导入 time 包 8 import time 9 10 driver = webdriver.Firefox() 11 driver.get("http://www.baidu.com") 12 13 #WebDriverWait()方法使用 14 element = WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id("kw")) 15 element.send_keys("selenium") 16 17 #添加隐式等待 18 driver.implicitly_wait(30) 19 driver.find_element_by_id("su").click() 20 21 #添加固定休眠时间 22 time.sleep(2) 23 24 driver.close()
5、WebDriverWait()方法详解
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
timeout - 最长超时时间,默认以秒为单位
poll_frequency - 休眠时间的间隔(步长)时间,默认为 0.5 秒
ignored_exceptions - 超时后的异常信息,默认情况下抛 NoSuchElementException 异常。
WebDriverWai()一般由 unit()或 until_not()方法配合使用,下面是 unit()和 until_not()方法的说明。
- until(method, message=’ ’)调用该方法提供的驱动程序作为一个参数,直到返回值不为 False。
- until_not(method, message=’ ’)调用该方法提供的驱动程序作为一个参数,直到返回值为 False。