Firefox 功能

geckodriver 有一些特定于 Firefox 的功能。其中大部分在 MDN 上有记录

此外,我们还有一些功能,这些功能主要属于实现问题,普通用户无需关心。

moz:debuggerAddress

一个布尔值,指示是否必须启用远程协议来启动 Firefox,这是一个低级调试接口,实现了Chrome DevTools 协议 (CDP) 的一个子集。

启用后,New Session 命令返回的 moz:debuggerAddress 功能是支持以下 HTTP 端点的服务器的 host:port 组合。

GET /json/version

浏览器版本元数据

{
    "Browser": "Firefox/84.0a1",
    "Protocol-Version": "1.0",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:84.0) Gecko/20100101 Firefox/84.0",
    "V8-Version": "1.0",
    "WebKit-Version": "1.0",
    "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/fe507083-2960-a442-bbd7-7dfe1f111c05"
}

GET /json/list

所有可用 websocket 目标的列表

[ {
    "description": "",
    "devtoolsFrontendUrl": null,
    "faviconUrl": "",
    "id": "ecbf9028-676a-1b40-8596-a5edc0e2875b",
    "type": "page",
    "url": "https://www.mozilla.org/en-US/",
    "browsingContextId": 29,
    "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/page/ecbf9028-676a-1b40-8596-a5edc0e2875b"
} ]

包含的 webSocketDebuggerUrl 条目可用于连接到 websocket 并通过使用 CDP 协议与浏览器交互。

moz:webdriverClick

一个布尔值,指示在对元素执行点击或发送键时要运行哪种交互性检查。对于 58.0 之前的 Firefox 版本,使用了从旧版 FirefoxDriver 导入的一些遗留代码。

使用 Firefox 58,[WebDriver] 规范所需的交互性检查默认启用。这意味着 geckodriver 在点击时还会额外检查元素是否被另一个元素遮挡,以及元素是否可聚焦以发送键。

由于这种行为的变化,我们意识到可能会返回一些额外的错误。在大多数情况下,可能需要更新相关的测试,使其符合新的检查。但如果问题出在 geckodriver 中,请在 [问题跟踪器] 中提出问题。

要临时禁用符合 WebDriver 的检查,请使用 false 作为此功能的值。

请注意,此功能仅临时存在,并且一旦交互性检查稳定,它将被删除。