显示等待
webdriver等待某个条件成立,则继续执行,否则在达到最长时间时抛出异常(TimeoutException)
在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在;如果超出设置时间仍然检测不到,则抛出异常
方法说明
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver:浏览器驱动
timeout:设置的超时时间,单位 秒
poll_frequency:检测的时间间隔,默认0.5秒
ignored_exceptions:超时后的异常信息,默认抛出 NoSuchElemnetException
WebDriverWait()一般和until()或者until_not()一起配合使用
until(method,message="") # 直到返回值为True
until_not(method,message="") # 直到返回值为False
实现代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
url = "https://www.baidu.com"
driver = webdriver.Chrome()
driver.get(url)
element = WebDriverWait(driver,5,0.5).until(
EC.visibility_of_element_located((By.ID,"kw"))
)
element.send_keys("显示等待")
time.sleep(5)
driver.quit()
隐式等待
"""隐式等待"""
from selenium import webdriver
from time import ctime
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
url = "https://www.baidu.com"
driver = webdriver.Chrome()
# 设置等待时间为10秒
driver.implicitly_wait(10)
driver.get(url)
try:
print(ctime())
driver.find_element(By.ID,"kw11").send_keys("隐式等待")
driver.find_element(By.ID,"su").click()
except NoSuchElementException as e:
print(e)
finally:
print(ctime())
driver.quit()
强制等待
直接使用time库的sleep方法来充当等待时间