a.添加固定的休眠时间,引入time包
python的time包提供的sleep()方法
例如:
1 #coding=utf-8 2 from selenium import webdriver 3 import time 4 5 browser=webdriver.Firefox() 6 browser.get("http://www.baidu.com") 7 time.sleep(10) #打开页面等待10秒 8 browser.find_element_by_id("kw").send_keys("selenium") 9 browser.find_element_by_id("su").click() 10 11 time.sleep(10) #浏览器10秒后关闭 12 browser.quit()
b.添加智能等待,隐式的等待一个元素被发现或一个命令完成
webdriver提供的超时等待,implicitly_wait()方法
例如:
1 #coding=utf-8 2 from selenium import webdriver 3 import time 4 5 browser=webdriver.Firefox() 6 browser.get("http://www.baidu.com") 7 browser.implicitly_wait(20) #智能等待20秒 8 browser.find_element_by_id("kw").send_keys("selenium") 9 browser.find_element_by_id("su").click() 10 11 browser.quit()
c.添加智能等待时间,在设置的时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。
由webDriver提供webDriverWait()方法
1 #coding=utf-8 2 from selenium import webdriver 3 from selenium.webdriver.support.ui import WebDriverWait 4 5 driver=webdriver.Ie() 6 driver.get("http://www.baidu.com") 7 #最长超时时间设置为10秒,默认步长为0.5秒,默认抛出NoSuchElementException异常 8 element=WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id("kw")) 9 element.send_keys("selenium") 10 11 driver.quit()
WebDriverWai()一般由 unit()或 until_not()方法配合使用,例如:
1 from selenium.webdriver.support.ui import WebDriverWait 2 .... 3 element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“someId”)) 4 is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)). 5 until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())
until(method, message=’’)
调用该方法提供的驱动程序作为一个参数,直到返回值不为 False
until_not(method, message=’’)
调用该方法提供的驱动程序作为一个参数,直到返回值为 False