Web页面属性document.readyState
描述当前页面的加载状态,该属性有三个值:loading(正在加载)、interactive(可交互)、complete(完成)。
默认情况下,在document.readyState
为COMPLETE
之前,WebDriver
都将延迟driver.get()
的响应或 driver.navigate().to()
的调用。
在单页应用程序中(例如Angular、React、Ember),一旦动态内容加载完毕(即pageLoadStrategy
状态为COMPLETE
) 则点击链接或在页面内执行某些操作的行为将不会向服务器发出新请求, 因为内容在客户端动态加载, 无需刷新页面。单页应用程序可以动态加载许多视图, 而无需任何服务器请求,因此页面加载策略将始终显示为COMPLETE
的状态, 直到我们执行新的 driver.get()
或driver.navigate().to()
为止。
WebDriver
支持的三种页面加载策略
WebDriver
支持的三种页面加载策略,即pageLoadStrategy
有三种取值:
normal
:等待整个页面的加载,Selenium WebDriver
保持等待,直到返回load
事件。默认情况下,如果未设置页面加载策略,则设置normal
为初始策略。eager
:Selenium WebDriver
保持等待,直到完全加载并解析了HTML文档,该策略无关样式表、图片和subframes的加载。设置为eager
时,Selenium WebDriver
保持等待, 直至返回DOMContentLoaded
事件。none
:Selenium WebDriver
仅等待至初始页面下载完成。
默认情况下,当Selenium WebDriver
加载页面时,遵循normal
的页面加载策略。始终建议您在页面加载缓慢时,停止下载其他资源 (例如图片、css、 js) 。
页面加载策略设置方法
pageLoadStrategy
是一项标准Capabilities
。因此,可以通过desiredCapabilities
或者Options
设置。
from selenium import webdriver
options = webdriver.FirefoxOptions()
webdriver.DesiredCapabilities.FIREFOX['pageLoadStrategy'] = 'normal'
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
print(driver.capabilities)
driver.quit()
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
options = FirefoxOptions()
options.set_capability('pageLoadStrategy', 'normal')
driver = webdriver.Firefox(options=options)
driver.get("http://www.baidu.com")
print(driver.capabilities)
driver.quit()