selenium webdriver的等待元素加载方式
一、强制等待
from time import sleep
time.sleep(1) #在此处等待一秒
二、隐式等待
driver = webdriver.Chrome()
driver.implicitly_wait(10)
每条语句最多等待10秒,10秒后依然未找到则抛出异常。10秒内发现该元素则继续下一条语句。
注:不可追加click方法
driver.find_element_by_name(‘name’).click()#可能会失效
若要使隐性等待生效,需改为:
element = driver.find_element_by_name(‘name’)
element.click()
三、显示等待
隐式等待申明一次即可;显示等待每条语句都要申明;
from selenium.webdriver.support.ui import WebDriverWait
#引入expected_conditions类,并重命名为EC
from selenium.webdriver.support expected_conditions as EC
#引入By类
from selenium.webdriver.common.by import By
#设置等待
wait = WebDriverWait(driver,10,0.5)
wait.until(EC.presence_of_element_located((By.ID,'KW'))).click()
注:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。