功能是可用于自定义和配置 ChromeDriver 会话的选项。本页记录了 ChromeDriver 支持的所有功能及其使用方法。
WebDriver 语言 API 提供了向 ChromeDriver 传递功能的方法。具体机制因语言而异,但大多数语言使用以下一种或两种机制:
- 使用
ChromeOptions
类。受 Java、Python 等支持的 - 使用
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
字典下。
所需的功能。
perfLoggingPrefs
对象
perfLoggingPrefs 字典具有以下格式(所有键都是可选的):
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
enableNetwork
|
布尔值 | true | 是否从广告联盟网域收集事件。 |
enablePage
|
布尔值 | true | 是否从网页网域收集事件。 |
traceCategories
|
字符串 | (空) | 应收集其跟踪事件的 Chrome 跟踪类别(以英文逗号分隔的字符串)。未指定或空字符串会停用跟踪。 |
bufferUsageReportingInterval
|
正整数 | 1000 | 请求的开发者工具跟踪缓冲区使用情况事件之间的毫秒数。例如,如果值为 1000,则每秒执行一次,则开发者工具会报告跟踪缓冲区的已满程度。如果报告显示缓冲区使用率为 100%,系统会发出警告。 |
返回的功能
这是 Chrome 特定返回的所有功能的列表。(即,当您创建新会话时,ChromeDriver 会返回什么内容)
名称 | 类型 | 说明 |
---|---|---|
chrome.chromedriverVersion
|
字符串 | ChromeDriver 的版本 |
userDataDir
|
字符串 | Chrome 正在使用的用户数据目录的路径;请注意,这是一个“Chrome 浏览器”字典 |