firefoxOptions

moz:firefoxOptions 功能集是一組特定於 Firefox 的名稱空間功能集。它用於控制 Firefox 的行為,並且可以用作 alwaysMatch 的成員,或用作 firstMatch 條目之一的成員。

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

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

binary (string)

要使用的自定義 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 (string)

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

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

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

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

log (Log 物件)

為了增加 geckodriver 和 Firefox 的日誌詳細程度,您可以傳遞一個 log 物件,例如 {"log": {"level": "trace"}},以包含所有跟蹤級別及以上的日誌。

prefs (Preferences 物件)

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

Android

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

androidPackage (string, required)

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

androidActivity (string, optional)

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

androidDeviceSerial (string, optional)

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

androidIntentArguments (字串陣列, optional)

用於啟動意圖的引數。底層,geckodriver 使用 Android am 來啟動被測的 Android 應用程式。給定的意圖引數將附加到 am start 命令。有關詳細資訊,請參閱 Android 的 意圖引數規範。這允許控制應用程式的啟動方式,幷包含用於啟用和停用功能的可選 extras。例如,要在導航到 URL 之前使用檢視操作啟動並指定 URL,以便作為測試的一部分,請包含:

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

例如,要指定一個可以透過 android.content.Intent.getBooleanExtra 處理的布林 extra,請包含:

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

env (Env 物件)

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

Log 物件

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

level (string)

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

Preferences 物件

一個 JSON 物件,每個條目代表一個要設定的首選項。該首選項將在啟動 Firefox 之前寫入 配置檔案。可透過在 Firefox 瀏覽器中訪問“about:config”來獲取可用首選項的完整列表。其中一些記錄在此 原始檔 中。

首選項物件的示例

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

Env 物件

一個 JSON 物件,每個條目代表一個要設定的環境變數。在桌面平臺上,被測 Firefox 將使用給定變數在其環境中啟動。在 Android 平臺上,基於 GeckoView 的應用程式將在其配置檔案 YAML 的 env 塊中新增給定變數。

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"
        }
      }
    }
  }
}

另見