WebDriver提供了两种类型的等待:显示等待和隐式等待。
1.显示等待使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.Chrome()
driver.get("http://www.baidu.com")
#WedDriverWait 显式等待
element =WebDriverWait(driver,5,0.5).until(
EC.presence_of_element_located((By.ID,"kw22"))
)
element.send_keys('selenium')
driver.quit()
2.is_displayed():判断元素是否可见
from selenium import webdriver
from time import sleep,ctime
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
print(ctime())
for i in range(10):
try:
el = driver.find_element_by_id("kw22")
if el.is_displayed():
break
except:
pass
sleep(1)
else:
print("time out")
print(ctime())
driver.close()