的方式實現的webdriver接受他們試圖自動瀏覽器配置信息是通過一個概念叫「能力」。啓動會話(啓動瀏覽器)時,用戶指定他們希望啓動的驅動程序支持哪些功能。這可能包括接受自簽名SSL證書的能力,瀏覽器的配置文件設置或任何其他許多事情。
然而,這個模型的挑戰之一是它被實現爲一個字典,鍵值對由任意字符串和值爲任意類型的對象的鍵組成。這裏有兩個潛在的問題。首先,功能名稱很容易被忽略或錯誤輸入,並且可能不被所有瀏覽器支持。而且,在代碼實際執行之前不可能知道這一點。至於值,通常情況下,驅動程序期望與它支持的名稱相關的值具有特定類型,並且在驅動程序實現之間這可能差別很大。
輸入選項類別。這些結構爲特定驅動程序可能期望的各種功能提供setter。它可以強制通過功能字典傳遞給驅動程序的名稱是正確的,並且可以對值強制執行類型安全性。但是,大多數驅動程序實現(Chromium項目的chromedriver
,Mozilla的geckodriver
,用於Edge瀏覽器的Microsoft MicrosoftWebDriver
等)不由Selenium項目構建或維護。驅動程序提供者可能會發佈一個新的驅動程序版本,該版本理解Selenium項目沒有時間在該驅動程序的選項類中創建類型安全的setter的新功能。
爲了使用戶在發佈下一個版本的Selenium之前不會被阻止使用新的功能,選項類有一個「添加一個額外的選項,但沒有類型安全的setter」方法。在Python中,這是您的示例看起來被寫入的內容,該方法被稱爲add_experimental_option
。該方法通常用於臨時使用,直到Selenium項目可以推出包含驅動程序實現者(Chrome驅動程序,在您的示例中)添加的新選項的類型安全setter的新版本。
太棒了!非常感謝。這非常有幫助。 – zeroth