配置文件¶
geckodriver 使用 配置文件 来控制 Firefox 的行为。用户通常依赖 geckodriver 生成一个临时且一次性的配置文件。这些配置文件会在 WebDriver 会话过期时被删除。
在用户需要使用自定义的、预先准备好的配置文件的情况下,geckodriver 会对配置文件进行修改以确保正确运行。请参阅下面的 自动化首选项,了解在这种情况下用户定义的首选项的优先级。
自定义配置文件可以通过两种不同的方式提供
通过在
args
功能 中追加--profile /some/location
,这将指示 geckodriver 就地使用该配置文件;或者将
profile
功能 设置为配置文件目录的 Base64 编码的 ZIP 文件。
请注意,geckodriver 存在一个 关于 --profile
的已知 Bug,它阻止将随机化的 Marionette 端口传递给 geckodriver。为了解决此问题,请确保使用 --marionette-port <port>
手动指定端口。
第二种方式与通过网络传输 Firefox 配置文件兼容,例如当 geckodriver 实例在远程系统上运行时。当使用 Selenium 的 RemoteWebDriver
概念时,情况就是这样,其中 WebDriver 客户端和服务器在两个不同的系统上运行。
临时配置文件的默认位置¶
当没有使用 -profile
命令行参数提供自定义用户配置文件时,geckodriver 会生成一个临时且一次性的配置文件。它会被写入默认的系统临时文件夹,并在 WebDriver 会话过期时被删除。
临时配置文件的默认位置取决于系统。在 Unix 系统上,它使用 /tmp,在 Windows 上,它使用 Windows 目录。
默认位置可以被覆盖。在 Unix 上,您设置 TMPDIR
环境变量。在 Windows 上,会按以下顺序考虑以下环境变量:
TMP
TEMP
USERPROFILE
无需在系统范围内更改临时目录。您只需确保它已为 geckodriver 进程的环境设置即可。
TMPDIR=/some/location ./geckodriver
自动化首选项¶
如引言中所述,geckodriver 会配置 Firefox,使其在自动化环境中表现良好。它结合使用在启动 Firefox 之前写入配置文件的首选项 (1) 和启动时设置的一组推荐的首选项 (2)。
这些可以在此处查看:
如前所述,这些是推荐的首选项,user.js 文件 或作为 prefs
功能一部分的任何用户定义的首选项都具有优先级。这意味着例如,用户可以调整 browser.startup.page
以覆盖启动浏览器时显示空白页的推荐首选项。
从 Firefox 91 开始,可以通过设置 remote.prefs.recommended
完全禁用在运行时设置的推荐首选项(参见上面的 2)。对于 Firefox 的旧版本,要使用的首选项是 marionette.prefs.recommended
。但是,这可能会导致 geckodriver 的行为不符合 WebDriver 标准,因此应谨慎使用。
用户应注意,marionette.port
首选项是特殊的,在使用 geckodriver 时始终会被覆盖,除非使用 --marionette-port <port>
标志专门指示 Firefox 中的 Marionette 服务器使用哪个端口。
临时配置文件未被删除¶
geckodriver 在某些情况下无法删除临时配置文件是一个已知的 Bug,尤其是在会话未明确删除或进程被中断时。请参阅 geckodriver 问题 299 以获取更多信息。