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

另见