天天看點

Selenium3 Python WebDriver API源碼探析(14)頁面加載政策pageLoadStrategy(FireFox)WebDriver支援的三種頁面加載政策頁面加載政策設定方法

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()