有时候,页面元素并未及时加载出来导致后面的步骤无法执行
这里就需要在加载前添加等待时间,让目标元素有足够的时间加载出来
第一种方法:使用time.sleep()
这种方法过于强制,无论元素是否加载出来都要等指定的时间,导致脚本执行效率不高
第二种方法:隐式等待implicitly_wait()
这种方法比较全局性,意味着一旦启用,全局有效,所有步骤都需要等待所有页面元素加载完后才会继续执行后续脚本
第三种:显示等待WebDriverWait
通俗的说法,指定的某元素,等待加载出来后,再执行后续操作。
这种等待方式可利用参数循环查询元素,超时即抛错
比如:
from selenium.webdriver.support.wait import WebDriverWait browser = webdriver.Chrome() WebDriverWait(browser,30,0.2).until(lambda x:x.find_element_by_xpath("//span[contains(text(),‘保存到网盘‘)]"))
超时时间30秒,每0.2秒查询一次,当能查询到xpath("//span[contains(text(),‘保存到网盘‘)]"时,执行后面的操作,否则直到达到超时时间后,程序异常出错
使用这种等待方式,需要import库
”from selenium.webdriver.support.wait import WebDriverWait“
原文地址:https://www.cnblogs.com/becks/p/11789827.html
时间: 2024-10-07 21:06:07