selenium-三种等待方式

时间:2022-11-26 14:56:44
  • 强制等待:最简单粗暴的一种办法就是强制等待sleep(x)
import time

time.sleep(3)
  • 隐式等待:如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。
from time import ctime
from selenium.common.exceptions import NoSuchElementException

driver.implicitly_wait(10)

try:
print(ctime())
driver.find_element_by_class_name("s_btn").click()
except NoSuchElementException as e:
print(e)
finally:
print(ctime())
  • 显式等待:显式等待使WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。
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

driver = webdriver.Firefox()
driver.get("https://www.baidu.com")

# element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))

WebDriverWait(driver, 1, 0.5).until_not(lambda x: x.find_element_by_xpath('//*[@]').send_keys("Seleniumm"), "出错了")

driver.quit()

selenium-三种等待方式