功能 & ChromeOptions
功能是可用于自定义和配置 ChromeDriver 会话的选项。本页记录所有 ChromeDriver 支持的功能以及如何使用它们。
WebDriver 语言 API 提供了将功能传递给 ChromeDriver 的方法。确切的机制因语言而异,但大多数语言使用以下一种或两种机制:
使用类。这得到 Java、Python 等的支持。ChromeOptions
使用类。Python、Ruby 等支持此功能。虽然它在 Java 中也可用,但它在 Java 中的用法被弃用。DesiredCapabilities
使用 Chrome 选项类
您可以创建 的实例,该实例具有设置 ChromeDriver 特定功能的便捷方法。然后,您可以将对象传递到 ChromeDriver 构造函数:ChromeOptionsChromeOptions
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
由于 Selenium 版本 3.6.0,Java 中的类也实现了该接口,允许您指定其他非 ChromeDriver 特有的 Web 驱动程序功能。ChromeOptionsCapabilities
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);
使用所需功能
要使用所需功能,您需要知道功能的名称及其所需的值类型。请参阅下面的完整列表。
Ruby
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => [ "--disable-web-security" ]})
driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub' desired_capabilities: caps
常见用例
使用自定义配置文件(也称为用户数据目录)
默认情况下,ChromeDriver 会为每个会话创建新的临时配置文件。有时您可能需要设置特殊首选项或完全使用自定义配置文件。如果是前者,您可以使用"chrome.prefs"功能(下文所述)来指定在 Chrome 启动后将应用的首选项。如果是后者,您可以使用 Chrome 命令行开关告诉 Chrome 使用哪个配置文件:user-data-dir
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
只需将交换机设置为某个新目录即可运行 Chrome(在命令行上或通过 ChromeDriver),即可创建自己的自定义配置文件。如果路径不存在,Chrome 将在指定位置创建新配置文件。然后,您可以根据需要修改配置文件设置,ChromeDriver 以后可以使用配置文件。打开浏览器中的chrome://version以查看 Chrome 正在使用哪些配置文件。user-data-dir
开始 Chrome 最大化
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
在非标准位置使用 Chrome 可执行文件
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
设置 Chrome 首选项
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.popups", 0);
options.setExperimentalOption("prefs", prefs);
已识别功能列表
这是 ChromeDriver 支持的所有 Web 驱动程序标准功能的列表:
Proxy对象
请参阅http://code.google.com/p/selenium/wiki/DesiredCapabilities#Proxy_JSON_Object
loggingPrefs对象
请参阅https://code.google.com/p/selenium/wiki/DesiredCapabilities#JSON_object
chromedriver选项对象
这是所有 Chrome 特定所需功能的列表,这些功能都位于Chrome 选项词典下。
如果可能,请使用ChromeOptions类,而不是直接指定这些课程。
名字 | 类型 | 默认 | 描述 |
---|---|---|---|
args | 字符串列表 | 启动 Chrome 时要使用的命令行参数的列表。具有关联值的参数应用"+"符号分隔(例如,[启动-最大化’,“用户-数据-dir_/tmp/temp_profile”*)。有关 Chrome 参数的列表,请参阅此处。 | |
binary | 字符串 | Chrome 可执行文件的路径(在 Mac OS X 上,这应该是实际的二进制文件,而不仅仅是应用程序,例如,’/应用程序/Google Chrome.app/内容/MacOS/谷歌 Chrome’) | |
extensions | 字符串列表 | 启动时要安装的 Chrome 扩展程序列表。列表中的每个项目应为基本-64编码包装的 Chrome 扩展机 (.crx) | |
localState | 字典 | 包含每个条目的字典,由首选项的名称及其值组成。这些首选项将应用于用户数据文件夹中的本地状态文件。 | |
prefs | 字典 | 包含每个条目的字典,由首选项的名称及其值组成。这些首选项仅应用于正在使用的用户配置文件。有关示例,请参阅 Chrome 用户数据目录中的"首选项"文件。 | |
detach | 布尔 | 假 | 如果为 false,则 Chrome 将在 ChromeDriver 终止时退出,无论会话是否退出。如果为 true,则仅当会话退出(或关闭)时,Chrome 才会退出。请注意,如果为 true,并且会话未退出,ChromeDriver 将无法清理正在运行的 Chrome 实例正在使用的临时用户数据目录。 |
debuggerAddress | 字符串 | 以 <主机名/ip:port>形式连接到的 Chrome 调试器服务器的地址,例如"127.0.0.0.1:38947" | |
excludeSwitches | 字符串列表 | Chrome 命令行列表将切换以排除默认情况下在启动 Chrome 时通过的 ChromeDriver。不要用–.前缀开关 | |
minidumpPath | 字符串 | 目录存储 Chrome 迷你转储 。(仅在 Linux 上支持。 | |
mobileEmulation | 字典 | 具有"设备名称"值或"设备指标"和"用户代理"值的字典。有关详细信息,请参阅移动仿真。 | |
perfLoggingPrefs | 字典 | 指定性能日志记录首选项的可选字典。有关详细信息,请参阅下文。 | |
窗口类型 | 字符串列表 | 窗口句柄列表中将显示的窗口类型的列表。要访问 元素,请在此列表中包括"Webview"。 |
perfLoggingPrefs对象
perf、C、S.Prefs 字典具有以下格式(所有键都是可选的):
名字 | 类型 | 默认 | 描述 |
---|---|---|---|
enableNetwork | 布尔 | 真 | 是否从网络域收集事件。 |
enablePage | 布尔 | 真 | 是否从主页域收集事件。 |
traceCategories | 字符串 | (空) | 应为其收集跟踪事件的由逗号分隔的 Chrome 跟踪类别字符串。未指定或空字符串禁用跟踪。 |
bufferUsageReportingInterval | 正整数 | 1000 | DevTools 跟踪缓冲区使用事件之间的请求毫秒数。例如,如果为 1000,然后每秒一次,DevTools 将报告跟踪缓冲区的已满程度。如果报告指示缓冲区使用率为 100%,则会发出警告。 |
返回的功能
这是所有特定于 Chrome 的返回功能的列表。(即,当您创建新会话时,ChromeDriver 返回什么)
名字 | 类型 | 描述 |
---|---|---|
chrome.chromedriverVersion | 字符串 | 铬驱动器版本 |
userDataDir | 字符串 | Chrome 正在使用的用户数据目录的路径;注意,这是一个"铬"字典内 |
ChromeDriver 服务器命令行参数
运行chromedriver – 帮助查看版本的命令行参数。