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

另请参阅