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 |
|
Linux BSD |
系统路径中找到的第一个 % which firefox /usr/bin/firefox |
Windows |
来自 Windows 系统注册表
|
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.firefox
、org.mozilla.firefox_beta
或 org.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,以便作为测试的一部分,请包含:
{
"androidIntentArguments": [
"-a",
"android.intent.action.VIEW",
"-d",
"https://example.com"
]
}
例如,要指定一个可以通过 android.content.Intent.getBooleanExtra 处理的布尔 extra,请包含:
{
"androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}
env
(Env 对象)
环境变量名称到环境变量值的映射,两者都必须是字符串,这些变量将被转发到 Android 设备上运行的应用程序进程。
Log 对象
一个 JSON 对象,可能包含以下任何字段:
level
(string)
设置 geckodriver 和 Firefox 的详细程度。可用级别包括 trace
、debug
、config
、info
、warn
、error
和 fatal
。如果未定义,默认为 info
。该值不区分大小写。
Preferences 对象
一个 JSON 对象,每个条目代表一个要设置的首选项。该首选项将在启动 Firefox 之前写入 配置文件。可通过在 Firefox 浏览器中访问“about:config”来获取可用首选项的完整列表。其中一些记录在此 源文件 中。
首选项对象的示例
{
"dom.ipc.processCount": 8,
"javascript.options.showInConsole": false
}
Env 对象
一个 JSON 对象,每个条目代表一个要设置的环境变量。在桌面平台上,被测 Firefox 将使用给定变量在其环境中启动。在 Android 平台上,基于 GeckoView 的应用程序将在其配置文件 YAML 的 env
块中添加给定变量。
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 功能列表
- 新会话 命令