舊版 Firefox 驅動程式

舊版 Firefox 驅動程式由 Selenium 開發人員開發為瀏覽器擴充功能。Firefox 更新了他們的安全性模型,因此它不再運作。您現在需要使用 geckodriver。

此文件先前位於 wiki 上
您可以閱讀更多關於 geckodriver 的資訊。

關於

Firefox 驅動程式包含在下載中提供的 selenium-server-standalone.jar 中。驅動程式以 xpi (firefox 擴充功能) 的形式提供,當您啟動新的 FirefoxDriver 實例時,會將其新增至 firefox 設定檔。

優點

  • 在真實瀏覽器中執行並支援 Javascript
  • 比 InternetExplorerDriver 快

缺點

  • 比 HtmlUnitDriver 慢

重要的系統屬性

以下系統屬性 (使用 Java 程式碼中的 System.getProperty() 讀取和 System.setProperty() 設定,或使用 “-DpropertyName=value” 命令列標記) 由 FirefoxDriver 使用

屬性意義
webdriver.firefox.bin用於控制 firefox 的二進制檔案位置。
webdriver.firefox.marionette布林值,若在獨立伺服器上設定,將忽略任何要求的 “marionette” 期望能力,並強制 firefox 使用 GeckoDriver (true) 或舊版 Firefox 驅動程式 (false)
webdriver.firefox.profile啟動 firefox 時要使用的設定檔名稱。預設為 webdriver 建立匿名設定檔
webdriver.firefox.useExisting切勿在生產環境中使用 如果存在正在運行的 firefox 實例,則使用它
webdriver.firefox.logfile用於傾印 firefox stdout/stderr 的記錄檔

通常 Firefox 二進制檔案假定位於您特定作業系統的預設位置

作業系統Firefox 預期位置
Linuxfirefox (使用 “which” 找到)
Mac/Applications/Firefox.app/Contents/MacOS/firefox-bin
視窗%PROGRAMFILES%\Mozilla Firefox\firefox.exe

預設情況下,Firefox 驅動程式會建立匿名設定檔

使用 Firebug 執行

從 mozilla 下載 firebug xpi 檔案,並按如下方式啟動設定檔

   File file = new File("firebug-1.8.1.xpi");
   FirefoxProfile firefoxProfile = new FirefoxProfile();
   firefoxProfile.addExtension(file);
   firefoxProfile.setPreference("extensions.firebug.currentVersion", "1.8.1"); // Avoid startup screen

   WebDriver driver = new FirefoxDriver(firefoxProfile);

FirefoxDriver 內部

(先前位於:https://github.com/SeleniumHQ/selenium/wiki/FirefoxDriver-Internals)

FirefoxDriver 主要以 Firefox 擴充功能的形式編寫。語言綁定透過經由 socket 連接並以 UTF-8 發送命令 (在 JsonWireProtocol 頁面中描述) 來控制驅動程式。擴充功能利用 Firefox 提供的 XPCOM 原語來完成其工作。需要注意的重要事項是,命令名稱直接對應到 javascript 程式碼中 “FirefoxDriver.prototype” 上公開的方法。

處理 FirefoxDriver 程式碼

首先,請確保沒有安裝舊版本的 FirefoxDriver

  • 啟動 firefox 的設定檔管理器:firefox -ProfileManager
  • 如果存在現有的 WebDriver 設定檔,請刪除它。也刪除檔案 (這是當您在設定檔管理器中刪除設定檔時提供的選項)

其次,查看 Mozilla 開發人員中心,特別是有關 設定擴充功能開發環境 的部分。您現在應該準備好編輯程式碼。最好在您正在處理的程式碼區域周圍建立測試,並使用 SingleTestSuite 執行此測試。FirefoxDriver 將錯誤記錄到 Firefox 的錯誤控制台 (“工具->錯誤控制台”),因此如果測試失敗,這是開始查找的好地方。

若要實際將資訊記錄到控制台,請在您的 javascript 程式碼中使用 “Utils.dumpn()” 方法。如果您發現想要詳細檢查物件,請使用 “Utils.dump()” 方法,它將報告物件實作哪些介面,並盡可能多地將資訊輸出到控制台。

控制流程:啟動 Firefox

當實例化 FirefoxDriver 的實例時,會執行以下步驟

  1. 抓取 “鎖定埠”
上次修改時間:2022 年 1 月 10 日:更多 wiki (#907) [部署網站] (adcf706a1ad)