一、显性等待
WebDriverWait,配合该类的until()和until_not()方法;
表示程序每隔x秒去判断一下指定的元素是否加载完,加载完了就执行下一步,否则继续每隔x秒去判断;
指定时间截止。如果超时就会抛出异常。
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver # 浏览器驱动
timeout # 最长超时时间
poll_frequency # 检测间隔时间,默认0.5s
ignored_exceptions # 超时后的异常信息,默认情况抛出NoSuchElementException异常
# WebDriverWait()一般由until()或until_not方法配合使用,下面是这两种方法的说明:
until(method,message='') # 调用该方法提供的驱动程序作为一个参数,直到返回值为True;
until_not(method,message='') # 调用该方法提供的驱动程序作为一个参数,直到返回值为Flase;
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome("F:\安装工具\python\chromedriver.exe")
driver.implicitly_wait(10)
driver.get('https://ishare.ifeng.com/c/s/7yjrAKzxgb2')
locator = (By.LINK_TEXT, '骆阳叶')
try:
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
print(driver.find_element_by_link_text('骆阳叶').get_attribute('href'))