配置文件

geckodriver 使用 配置文件 来控制 Firefox 的行为。用户通常依赖 geckodriver 生成一个临时且一次性的配置文件。这些配置文件会在 WebDriver 会话过期时被删除。

在用户需要使用自定义的、预先准备好的配置文件的情况下,geckodriver 会对配置文件进行修改以确保正确运行。请参阅下面的 自动化首选项,了解在这种情况下用户定义的首选项的优先级。

自定义配置文件可以通过两种不同的方式提供

  1. 通过在 args 功能 中追加 --profile /some/location,这将指示 geckodriver 就地使用该配置文件;

  2. 或者将 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 上,会按以下顺序考虑以下环境变量:

  1. TMP

  2. TEMP

  3. USERPROFILE

无需在系统范围内更改临时目录。您只需确保它已为 geckodriver 进程的环境设置即可。

TMPDIR=/some/location ./geckodriver

自动化首选项

如引言中所述,geckodriver 会配置 Firefox,使其在自动化环境中表现良好。它结合使用在启动 Firefox 之前写入配置文件的首选项 (1) 和启动时设置的一组推荐的首选项 (2)。

这些可以在此处查看:

  1. testing/geckodriver/src/prefs.rs

  2. remote/components/marionette.js

如前所述,这些是推荐的首选项,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 以获取更多信息。