1. time.sleep()
from selenium import webdriver import time driver=webdriver.Firefox() driver.get('http://www.baidu.com') #打开百度 time.sleep(3) #time.sleep(3)的意思是当前线程等待3秒后,在执行后面的代码,因此当无法找到元素时不会等待会立即报错 driver.find_element_by_id('kw1') driver.quit()
2.implicitly_wait()
from selenium import webdriver driver=webdriver.Firefox() driver.get('http://www.baidu.com') #打开百度 driver.implicitly_wait(10) #定义当前句柄查找元素的时间,每个元素都会默认等待10s,如果10s内,没有查询到元素,则报出异常,停止运行 driver.find_element_by_id('kw1').send_keys('aaa') driver.quit()
3.WebDriverWait()
3.1 until()
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait import time def find_element(driver, timeout, func): return WebDriverWait(driver, 10).until(func, 'element not found') driver=webdriver.Firefox() driver.get('http://www.baidu.com') #打开百度 element=find_element(driver, 10, lambda driver: driver.find_element_by_id('kw1')) #定义元素的查找时间,等待10s,如果10s内,没有查询到元素,则报出异常,异常信息为:element not found,停止运行,如果查询到元素,则返回元素 element.send_keys('aaa') time.sleep(3) driver.quit()
3.2 not until()
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait import time def find_element(driver, timeout, func): return WebDriverWait(driver, 10).until_not(func, 'element is found') driver=webdriver.Firefox() driver.get('http://www.baidu.com') #打开百度 print(find_element(driver, 10, lambda driver: driver.find_element_by_id('kw1'))) #定义元素的查找时间,等待10s,如果10s内,查询到元素,则报出异常,异常信息为:element is found,停止运行,如果没有查询到元素,则返回True time.sleep(3) driver.quit()