firefoxOptions

moz:firefoxOptions 功能 是一個名稱空間的特性集,專門用於 Firefox。它用於控制 Firefox 的行為,可以作為 alwaysMatch 的成員使用,也可以作為 firstMatch 條目之一的成員使用。

它用於定義控制 Firefox 啟動和執行方式的選項。

moz:firefoxOptions 是一個 JSON 物件,可以包含以下任何欄位

binary (字串)

要使用的自定義 Firefox 二進位制檔案的絕對路徑。

在 macOS 上,您可以提供應用程式包的路徑,例如 /Applications/Firefox.app,或者提供該包中可執行二進位制檔案的絕對路徑,例如 /Applications/Firefox.app/Contents/MacOS/firefox-bin

如果未定義,geckodriver 將嘗試推斷當前系統上 Firefox 的預設位置。Firefox 的預設位置為

系統 預設位置
macOS
  1. /Applications/Firefox.app/Contents/MacOS/firefox-bin
  2. $HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin
Linux
BSD

系統路徑上找到的第一個 firefox。這等效於執行 which(1) 的輸出

% which firefox
/usr/bin/firefox
Windows

來自 Windows 系統登錄檔

  1. HKEY_LOCAL_MACHINE\SOFTWARE WOW6432Node\Mozilla\Mozilla Firefox\[VERSION]\Main\PathToExe
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\[VERSION]\Main\PathToExe
args (字串陣列)

要傳遞給 Firefox 二進位制檔案的命令列引數。這些引數必須包含必要的引導破折號 (-),例如 ["-headless"]

要讓 geckodriver 獲取本地檔案系統上現有的 配置檔案,您可以傳遞 ["-profile", "/path/to/profile"]。但是,如果配置檔案必須傳輸到目標機器,建議使用 profile 條目。

profile (字串)

要用於 Firefox 例項的配置檔案目錄的 Base64 編碼 ZIP 檔案。這可用於例如安裝擴充套件或自定義證書,但對於設定自定義首選項,建議使用 prefs (首選項物件) 條目。

配置檔案是在系統臨時資料夾中建立的。當提供 profile 時,編碼的配置檔案也會提取到此位置。預設情況下,geckodriver 將在此位置建立一個新的配置檔案。

WebDriver 會話使用的有效配置檔案將返回給使用者,並在 新會話響應 中的 moz:profile 功能中返回。

要讓 geckodriver 獲取檔案系統上現有的配置檔案,請將 args 欄位設定為 {"args": ["-profile", "/path/to/your/profile"]}。請注意,如果您使用的是針對不同系統上的伺服器的遠端客戶端,則配置檔案必須已存在於目標系統上。

log (日誌物件)

要提高 geckodriver 和 Firefox 的日誌記錄詳細程度,您可以傳遞一個 log 物件,該物件可能看起來像 {"log": {"level": "trace"}} 以包含所有跟蹤級別日誌及以上級別日誌。

prefs (首選項物件)

首選項名稱到首選項值的對映,這些值可以是字串、布林值或整數。

Android

從 geckodriver 0.26.0 開始,如果要在 Android 上控制 Firefox 或嵌入 GeckoView 的應用程式,則存在其他功能。

androidPackage (字串,必需)

Firefox 的包名,例如 org.mozilla.firefoxorg.mozilla.firefox_betaorg.mozilla.fennec(取決於釋出通道),或者嵌入 GeckoView 的應用程式的包名,例如 org.mozilla.geckoview_example

androidActivity (字串,可選)

要啟動的活動的完全限定類名,例如 .GeckoViewActivity。如果未指定,將使用包的預設活動。

androidDeviceSerial (字串,可選)

要啟動應用程式的裝置的序列號。如果未指定且連線了多個裝置,則將返回錯誤。

androidIntentArguments (字串陣列,可選)

要啟動意圖的附加引數。在幕後,geckodriver 使用 Android am 啟動要測試的 Android 應用程式。給定的意圖引數將附加到 am start 命令。有關詳細資訊,請參閱 Android 的 意圖引數規範。這允許控制應用程式的啟動方式,以及包含用於啟用和停用功能的可選附加資訊。例如,要啟動檢視操作並在測試期間導航之前指定一個 URL,請包括

json
{
  "androidIntentArguments": [
    "-a",
    "android.intent.action.VIEW",
    "-d",
    "https://example.com"
  ]
}

例如,要指定可以使用 android.content.Intent.getBooleanExtra 處理的布林值附加資訊,請包括

json
{
  "androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}

env (環境物件)

環境變數名稱到環境變數值的對映,兩者都必須是字串,並將轉發到 Android 裝置上執行的應用程式程序。

日誌物件

一個 JSON 物件,可以包含以下任何欄位

level (字串)

設定 geckodriver 和 Firefox 的詳細程度級別。可用級別為 tracedebugconfiginfowarnerrorfatal。如果未定義,預設值為 info。該值不區分大小寫。

首選項物件

一個 JSON 物件,每個條目對應要設定的一個首選項。首選項將在啟動 Firefox 之前寫入 配置檔案。可以在 Firefox 瀏覽器中訪問“about:config”檢視可用首選項的完整列表。其中一些在 此原始碼 檔案中有所記錄。

首選項物件的示例

json
{
  "dom.ipc.processCount": 8,
  "javascript.options.showInConsole": false
}

環境物件

一個 JSON 物件,每個條目對應要設定的一個環境變數。在桌面系統上,要測試的 Firefox 將在其環境中使用給定的變數啟動。在 Android 上,基於 GeckoView 的應用程式將在其配置 YAML 中將給定的變數新增到 env 塊中。

環境物件的示例

json
{
  "MOZ_LOG": "nsHttp:5",
  "MOZ_LOG_FILE": "/mnt/sdcard/log"
}

示例

以下是一個完整的 功能物件 的示例,該物件選擇一個特定的 Firefox 二進位制檔案,並在 無頭模式 下使用來自檔案系統的準備好的 配置檔案 執行該二進位制檔案。它還透過首選項增加了 IPC 程序的數量,關閉了控制檯中顯示的 Chrome 錯誤/警告,並啟用了更詳細的日誌記錄。

json
{
  "capabilities": {
    "alwaysMatch": {
      "moz:firefoxOptions": {
        "binary": "/usr/local/firefox/bin/firefox",
        "args": ["-headless", "-profile", "/path/to/my/profile"],
        "prefs": {
          "dom.ipc.processCount": 8,
          "javascript.options.showInConsole": false
        },
        "log": { "level": "trace" },
        "env": {
          "MOZ_LOG": "nsHttp:5",
          "MOZ_LOG_FILE": "/path/to/my/profile/log"
        }
      }
    }
  }
}

moz:firefoxOptions 必須放置在 alwaysMatch 中(如上所示),或者放置在 firstMatch 功能物件 中,如下所示

json
{
  "capabilities": {
    "firstMatch": [
      {"moz:firefoxOptions":}
    ]
  }
}

Android

這將執行已安裝在主機上執行的第一個 Android 模擬器上的 GeckoView 示例應用程式

json
{
  "capabilities": {
    "alwaysMatch": {
      "moz:firefoxOptions": {
        "androidPackage": "org.mozilla.geckoview_example",
        "androidActivity": "org.mozilla.geckoview_example.GeckoView",
        "androidDeviceSerial": "emulator-5554",
        "androidIntentArguments": ["-d", "http://example.org"],
        "env": {
          "MOZ_LOG": "nsHttp:5",
          "MOZ_LOG_FILE": "/mnt/sdcard/log"
        }
      }
    }
  }
}

另請參閱