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 |
|
Linux BSD |
系统路径上找到的第一个 % which firefox /usr/bin/firefox |
Windows |
来自 Windows 系统注册表
|
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.firefox
、org.mozilla.firefox_beta
或 org.mozilla.fennec
(取决于发布通道),或者嵌入 GeckoView 的应用程序的包名,例如 org.mozilla.geckoview_example
。
androidActivity
(字符串,可选)
要启动的活动的完全限定类名,例如 .GeckoViewActivity
。如果未指定,将使用包的默认活动。
androidDeviceSerial
(字符串,可选)
要启动应用程序的设备的序列号。如果未指定且连接了多个设备,则将返回错误。
androidIntentArguments
(字符串数组,可选)
要启动意图的附加参数。在幕后,geckodriver 使用 Android am 启动要测试的 Android 应用程序。给定的意图参数将附加到 am start
命令。有关详细信息,请参阅 Android 的 意图参数规范。这允许控制应用程序的启动方式,以及包含用于启用和禁用功能的可选附加信息。例如,要启动查看操作并在测试期间导航之前指定一个 URL,请包括
{
"androidIntentArguments": [
"-a",
"android.intent.action.VIEW",
"-d",
"https://example.com"
]
}
例如,要指定可以使用 android.content.Intent.getBooleanExtra 处理的布尔值附加信息,请包括
{
"androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}
env
(环境对象)
环境变量名称到环境变量值的映射,两者都必须是字符串,并将转发到 Android 设备上运行的应用程序进程。
日志对象
一个 JSON 对象,可以包含以下任何字段
level
(字符串)
设置 geckodriver 和 Firefox 的详细程度级别。可用级别为 trace
、debug
、config
、info
、warn
、error
和 fatal
。如果未定义,默认值为 info
。该值不区分大小写。
首选项对象
环境对象
一个 JSON 对象,每个条目对应要设置的一个环境变量。在桌面系统上,要测试的 Firefox 将在其环境中使用给定的变量启动。在 Android 上,基于 GeckoView 的应用程序将在其配置 YAML 中将给定的变量添加到 env
块中。
环境对象的示例
{
"MOZ_LOG": "nsHttp:5",
"MOZ_LOG_FILE": "/mnt/sdcard/log"
}
示例
以下是一个完整的 功能对象 的示例,该对象选择一个特定的 Firefox 二进制文件,并在 无头模式 下使用来自文件系统的准备好的 配置文件 运行该二进制文件。它还通过首选项增加了 IPC 进程的数量,关闭了控制台中显示的 Chrome 错误/警告,并启用了更详细的日志记录。
{
"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
功能对象 中,如下所示
{
"capabilities": {
"firstMatch": [
{"moz:firefoxOptions": …}
]
}
}
Android
这将运行已安装在主机上运行的第一个 Android 模拟器上的 GeckoView 示例应用程序
{
"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"
}
}
}
}
}
另请参阅
- geckodriver 关于支持的 Firefox 功能的文档
-
Chrome 特定的 WebDriver 功能 (
goog:chromeOptions)
- WebDriver 功能列表
- 新会话 命令