在网速慢、页面图片多的(例如电商网站)情况下,Selenium会卡住不继续执行,在这设置隐式/显示等待都是没有用的。
这是因为在Selenium中,页面的默认加载策略为normal
,Selenium会等待到页面的所有资源(如HTML、CSS、JavaScript、图片等)都加载完成,然后才会执行后续的操作。
可以通过以下方式设置页面加载策略:
from selenium import webdriver
# 设置页面加载策略,这里使用的是Chrome,使用不同的浏览器的话换成自己用的就行了
options = webdriver.ChromeOptions()
options.page_load_strategy = eager # 或 'normal' 或 'none'
# 启动浏览器
driver = webdriver.Chrome(options=options)
在上面的代码中,将页面加载策略设置为eager
后,Selenium会在文档内容加载完毕后(不等待JavaScript文件和图片的加载)就立即开始执行后续的操作。
再配合各种等待(避免元素还没加载出来动作就已经执行),来实现不等页面加载完全就操作页面元素。