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
WebDriver
支援的三種頁面加載政策,即
pageLoadStrategy
有三種取值:
-
:等待整個頁面的加載,normal
保持等待,直到傳回Selenium WebDriver
事件。預設情況下,如果未設定頁面加載政策,則設定load
為初始政策。normal
-
:eager
保持等待,直到完全加載并解析了HTML文檔,該政策無關樣式表、圖檔和subframes的加載。設定為Selenium WebDriver
時,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()