参考,博客原文:http://blog.youkuaiyun.com/huilan_same/article/details/52544521
NOTE: selenium—Python中的等待时间为秒 而不是毫秒,一定要注意,楼主犯过类似错误。
1.简单粗暴:
import time
time.sleep(20)
2.隐式等待:最长等待多少秒,等待时间内:如果元素加载出来则不再继续等待执行下一步操作,超过最长等待时间:如果未加载出来,selenium直接报错
driver.implicity_wait(20)
3.显示等待:每隔多少秒看一次,如果加载出来直行下一步,窦泽继续等待直至超过设置的最长时间,然后抛异常: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("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
一般expected_conditions 模块与 WebDriverWait 结合使用,关于excepted_conditins模块包含的内容可以查看链接:http://blog.youkuaiyun.com/huilan_same/article/details/52544521
同时要注意:EC.presence_of_element_located((By.ID, "myDynamicElement")) 内部的参数应该是iterable 不能是webElement,所以不能用driver.find_element_by_ .