功能和 ChromeOptions

功能是可用于自定义和配置 ChromeDriver 会话的选项。本页记录了 ChromeDriver 支持的所有功能及其使用方法。

WebDriver 语言 API 提供了向 ChromeDriver 传递功能的方法。具体机制因语言而异,但大多数语言使用以下一种或两种机制:

  1. 使用 ChromeOptions 类。受 Java、Python 等支持的
  2. 使用 DesiredCapabilities 类。Python、Ruby 等均支持这种做法。虽然它在 Java 中也可用,但在 Java 中已被弃用。

使用 ChromeOptions 类

您可以创建 ChromeOptions 实例,该实例可用于设置特定于 ChromeDriver 的功能。然后,您可以将 ChromeOptions 对象复制到 ChromeDriver 构造函数中:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

从 Selenium 3.6.0 版本开始,Java 中的 ChromeOptions 类还会实现 Capabilities 接口,从而让您能够指定并非特定于 ChromeDriver 的其他 WebDriver 功能。

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

使用 DesiredCapabilities

如需使用 DesiredCapabilities,您需要知道 capability 的名称及其接受的值类型。请点击此处查看完整列表。

Python

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

常见使用场景

使用自定义配置文件(也称为用户数据目录)

默认情况下,ChromeDriver 会为每个会话创建一个新的临时配置文件。有时,您可能希望设置特殊的偏好设置,或者只使用自定义的个人资料。如果是前者,您可以使用“chrome.prefs”指定在 Chrome 启动后应用的偏好设置。如果是后者,您可以使用 user-data-dir Chrome 命令行开关告知 Chrome 使用哪个个人资料:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

您只需运行 Chrome(在命令行中或通过 ChromeDriver)并将 user-data-dir 开关设为某个新目录,即可创建自己的自定义配置文件。如果路径不存在,Chrome 会在指定的位置创建新的配置文件。然后,您可以根据需要修改配置文件设置,ChromeDriver 日后可以使用该配置文件。在浏览器中打开 chrome://version,查看 Chrome 使用的个人资料。

以最大化模式启动 Chrome

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

在非标准位置使用 Chrome 可执行文件

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

屏蔽对话框窗口

默认情况下,ChromeDriver 会将 Chrome 配置为允许显示弹出式窗口。如果您想阻止弹出式窗口(即恢复不受 ChromeDriver 控制的 Chrome 常规行为),请执行以下操作:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

设置下载目录

以下代码可用于配置 Chrome 将文件下载到特定目录。不过,您需要注意以下几点:

  • Chrome 禁止使用特定目录进行下载。具体来说,您不能将桌面文件夹用作下载目录。在 Linux 上,您也无法使用主目录进行下载。由于禁止目录的确切列表随时可能更改,因此我们建议您使用对系统没有特殊意义的目录。
  • ChromeDriver 不会自动等待下载完成。如果您过早调用 Driver.quit(),Chrome 可能会在下载完成之前终止。
  • 相对路径并非始终有效。为获得最佳结果,请改用完整路径。
  • 在 Windows 上,使用“"用作路径分隔符。使用“/”在 Windows 上不可靠。
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

认可的功能

如需了解标准,请参阅 Selenium 文档W3C WebDriver 标准 ChromeDriver 接受的所有功能。这里我们只列出 功能。

ChromeOptions 对象

大多数 Chrome 专用功能都通过 ChromeOptions 公开 对象。在某些语言中,这通过 ChromeOptions 类实现。在 则存储在 Google Cloud 中的 goog:chromeOptions 字典下。 所需的功能。

名称 类型 默认  说明 
args  字符串列表   启动 Chrome 时要使用的命令行参数列表。具有关联值的参数应以“=”分隔符号(例如,['start-maximized', 'user-data-dir=/tmp/temp_profile'])。请参阅 此处 获取 Chrome 参数列表。
binary 字符串   要使用的 Chrome 可执行文件的路径(在 Mac OS X 上,这应该是实际的二进制文件,而不仅仅是应用。例如“/Applications/Google Chrome.app/Contents/MacOS/Google Chrome”)
extensions 字符串列表   启动时安装的一系列 Chrome 扩展程序。列表中的每一项都应是采用 base-64 编码的打包 Chrome 扩展程序 (.crx)
localState 字典   一个字典,其中每个条目都包含偏好设置的名称及其值。这些偏好设置会应用于用户数据文件夹中的 Local State 文件。
prefs 字典   一个字典,其中每个条目都包含偏好设置的名称及其值。这些偏好设置仅应用于正在使用的用户个人资料。查看“偏好设置”文件。
detach 布尔值 错误 如果设为 false,则当 ChromeDriver 终止后,无论会话是否退出,Chrome 都会退出。如果为 true,那么只有当会话退出(或关闭)时,Chrome 才会退出。请注意,如果为 true,并且未退出会话,则 ChromeDriver 无法清理正在运行的 Chrome 实例正在使用的临时用户数据目录。
debuggerAddress 字符串
要连接的 Chrome 调试程序服务器的地址,格式为 <主机名/IP:端口>,例如“127.0.0.1:38947”
excludeSwitches 字符串列表   Chrome 命令行开关列表,用于在启动 Chrome 时排除 ChromeDriver 默认通过的测试。请勿在开关前面添加 -- 前缀。
minidumpPath  字符串   用于存储 Chrome 小型转储的目录。(仅适用于 Linux)。
mobileEmulation 字典   具有“deviceName”值或“deviceMetrics”和“userAgent”值的字典。如需了解详情,请参阅移动设备模拟
perfLoggingPrefs 字典   用于指定性能日志记录偏好设置的可选字典。如需了解详情,请参阅下文。
windowTypes 字符串列表   显示在窗口手柄列表中的窗口类型列表。用于访问 <webview>包括“webview”。

perfLoggingPrefs 对象

perfLoggingPrefs 字典具有以下格式(所有键都是可选的):

名称 类型 默认值 说明
enableNetwork 布尔值 true 是否从广告联盟网域收集事件。
enablePage 布尔值 true 是否从网页网域收集事件。
traceCategories 字符串 (空) 应收集其跟踪事件的 Chrome 跟踪类别(以英文逗号分隔的字符串)。未指定或空字符串会停用跟踪。
bufferUsageReportingInterval 正整数 1000 请求的开发者工具跟踪缓冲区使用情况事件之间的毫秒数。例如,如果值为 1000,则每秒执行一次,则开发者工具会报告跟踪缓冲区的已满程度。如果报告显示缓冲区使用率为 100%,系统会发出警告。

返回的功能

这是 Chrome 特定返回的所有功能的列表。(即,当您创建新会话时,ChromeDriver 会返回什么内容)

名称 类型  说明 
chrome.chromedriverVersion 字符串 ChromeDriver 的版本
userDataDir 字符串 Chrome 正在使用的用户数据目录的路径;请注意,这是一个“Chrome 浏览器”字典