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()
本文介绍了WebDriver的页面加载策略,包括normal、eager和none三种模式,详细阐述了它们在处理页面加载尤其是单页应用时的区别。normal策略等待整个页面加载完成,eager策略在HTML文档加载完成后即停止,none策略则只等待初始页面下载。同时,提供了如何通过FirefoxOptions设置页面加载策略的代码示例。
1万+

被折叠的 条评论
为什么被折叠?



