Selenium3 Python WebDriver API源码探析(14)页面加载策略pageLoadStrategy(FireFox)

Web页面属性document.readyState描述当前页面的加载状态,该属性有三个值:loading(正在加载)、interactive(可交互)、complete(完成)。
默认情况下,在document.readyStateCOMPLETE之前,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为初始策略。
  • eagerSelenium WebDriver保持等待,直到完全加载并解析了HTML文档,该策略无关样式表、图片和subframes的加载。设置为 eager时,Selenium WebDriver保持等待, 直至返回DOMContentLoaded事件。
  • noneSelenium 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()

猜你喜欢

转载自blog.csdn.net/mighty13/article/details/115099282