一、Chrome Driver 是什么
WebDriver 是一款开源工具,专为在多种浏览器中自动测试 Web 应用而打造。借助其接口,您可以使用功能在本地或远程控制和自省用户代理。
ChromeDriver 是一个实现了 W3C WebDriver 和 WebDriver BiDi 标准的独立的服务。
Capability 是一组不依赖于语言的键值对,用于定义 WebDriver 会话的所需功能和行为。在创建 WebDriver 实例时,通常会将功能作为参数传递,并且可用于指定浏览器设置,例如浏览器名称、版本和网页加载策略。
ChromeDriver 通过添加 Chromium 专用功能来扩展 Webdriver。它使用 ChromeOptions 对象将 WebDriver API 中的功能传递给 ChromeDriver。某些 Chromium 专用功能包括安装扩展程序、更改窗口类型以及在启动时传递命令行参数。
如果要查看完整的 WebDriver 命令和 ChromeDriver 对它们的支持度,可以参考:WebDriver Status。
更多文档参考:Chromium Docs
二、下载 Chrome Driver
- 如需下载最新的 ChromeDriver 二进制文件,您可以使用 JSON 端点 获取最新的下载链接。
- 从 M115 开始,可以访问 Chrome 测试版可用性信息中心,查看各个发布渠道(稳定版、
Beta版、开发者版、Canary版)的最新Chrome和ChromeDriver版本。
JSON API endpoints (相关的下载链接)
| Endpoint | Description |
|---|---|
known-good-versions.json |
The versions for which all CfT assets are available for download. Useful for bisecting. |
known-good-versions-with-downloads.json |
Same as above, but with an extra downloads property for each version, listing the full download URLs per asset. |
last-known-good-versions.json |
The latest versions for which all CfT assets are available for download, for each Chrome release channel (Stable/Beta/Dev/Canary). |
last-known-good-versions-with-downloads.json |
Same as above, but with an extra downloads property for each channel, listing the full download URLs per asset. |
latest-patch-versions-per-build.json |
The latest versions for which all CfT assets are available for download, for each known combination of MAJOR.MINOR.BUILD versions. |
latest-patch-versions-per-build-with-downloads.json |
Same as above, but with an extra downloads property for each version, listing the full download URLs per asset. |
latest-versions-per-milestone.json |
The latest versions for which all CfT assets are available for download, for each Chrome milestone. |
latest-versions-per-milestone-with-downloads.json |
Same as above, but with an extra downloads property for each milestone, listing the full download URLs per asset. |
Other API endpoints
由于历史原因, LATEST_RELEASE_ 文件也包含了完整的可用版本号。
|
|
- 比如
LATEST_RELEASE_116会响应116开头的最新的可用版本号。 - 比如
LATEST_RELEASE_116.0.5845会响应116.0.5845.*中最新的可用版本号。 - 比如
LATEST_RELEASE_STABLE会响应最新的稳定版版本号,其他可用的通道还有 (BETA/DEV/CANARY)。 - 这些规则也可以用于
laest-versions-per-milestone,latest-patch-versions-per-build, andlast-known-good-versions。 - 同时,
known-good-versions-with-downloads.json中的每一个版本也都提供了一个JSON链接,内含下载链接。比如:123.0.6309.0.json。 - 所有可用的JSON链接信息:browse the complete list of JSON and text files。
选择要下载的 ChromeDriver 版本的步骤如下:
|
|
三、ChromeOptions 选项和参数
| 姓名 | 类型 | 默认 | 说明 |
|---|---|---|---|
| args | 字符串列表 | 启动 Chrome 时使用的命令行参数列表。带有关联值的参数应以“=”符号分隔(例如,[“start-maximized”,“user-data-dir=/tmp/temp_profile”])。查看 Chrome 参数列表。 | |
| binary | 字符串 | 指向要使用的 Chrome 可执行文件的路径。在 macOS X 上,这应是实际二进制文件,而不仅仅是应用,例如 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome。 | |
| extensions | 字符串列表 | 要随系统启动时安装的 Chrome 扩展程序的列表。列表中的每个项都应为 base-64 编码的已打包 Chrome 扩展程序 (.crx) | |
| localState | 字典 | 一个字典,其中每个条目都由偏好设置的名称及其值组成。这些偏好设置会应用于用户数据文件夹中的 Local State 文件。 | |
| prefs | 字典 | 一个字典,其中每个条目都由偏好设置的名称及其值组成。这些偏好设置仅应用于当前使用的用户个人资料。如需查看示例,请参阅 Chrome 用户数据目录中的“偏好设置”文件。 | |
| detach | 布尔值 | false | 如果为 false,则无论会话是否退出,ChromeDriver 被终止时 Chrome 都会退出。如果为 true,则只有在会话退出或关闭时,Chrome 才会退出。如果为 true 且会话未退出,ChromeDriver 将无法清理正在运行的 Chrome 实例使用的临时用户数据目录。 |
| debuggerAddress | 字符串 | 要连接到的 Chrome 调试程序服务器的地址,格式为 <hostname/ip:port>,例如“127.0.0.1:38947” | |
| excludeSwitches | 字符串列表 | 用于排除 ChromeDriver 在启动 Chrome 时默认传递的 Chrome 命令行开关的列表。请勿在开关前添加 -- 前缀。 | |
| minidumpPath | 字符串 | 用于存储 Chrome 迷你转储的目录。(仅在 Linux 上受支持。) | |
| mobileEmulation | 字典 | 一个字典,其中包含“deviceName”的值,或“deviceMetrics”和“userAgent”的值。如需了解详情,请参阅移动设备模拟。 | |
| perfLoggingPrefs | 字典 | 一个可选字典,用于指定性能日志记录偏好设置。如需了解详情,请参阅下文。 | |
| windowTypes | 字符串列表 | 窗口句柄列表中显示的窗口类型的列表。 如需访问 WebView 元素,请在此列表中添加“WebView”。 | |
| enableExtensionTargets | 布尔值 | false | 启用 Chrome 扩展程序目标的自省。默认情况下,ChromeDriver 不包含扩展程序目标(从 Chrome 136 开始)。 |
四、Chrome定制化相关参数
4.1 相关文件
| 位置 | 文件 | 说明 |
|---|---|---|
Chrome 安装目录 |
initial_preferences |
仅在首次启动时读取的初始配置(需 First Run 不存在)。 |
Chrome 安装目录 |
User Data/Default |
默认 Profile 的数据目录,未登录时的主配置 |
Chrome 安装目录 |
Local State |
记录全局状态(如已安装的 Profile) |
Chrome 安装目录 |
Extensions |
所有用户的扩展程序(跨Profile共享) |
用户 profile 目录 |
First Run |
标记浏览器是否已完成首次启动 |
用户 profile 目录 |
Bookmarks |
书签数据(JSON格式) |
用户 profile 目录 |
History |
浏览历史记录(SQLite数据库) |
用户 profile 目录 |
Cookies |
网站Cookies(加密SQLite数据库) |
用户 profile 目录 |
Login Data |
保存的密码(加密SQLite数据库) |
用户 profile 目录 |
Preferences |
用户偏好设置(JSON格式,如默认搜索引擎、主页) |
用户 profile 目录 |
Web Data |
自动填充表单数据(如地址、信用卡信息) |
用户 profile 目录 |
Favicons |
网站图标缓存 |
用户 profile 目录 |
Session Storage/ |
会话存储数据(HTML5本地存储) |
4.2 启动时相关参数
完整参数列表参考:List of Chromium Command Line Switches
| 参数` | 作用 适用场景 | |
|---|---|---|
--no-first-run |
跳过首次运行的欢迎页面和初始设置向导 | 批量部署、自动化测试 |
--disable-first-run-ui |
同 --no-first-run,禁用首次运行界面 | 同上 |
--kiosk |
启用全屏 kiosk 模式,禁用所有浏览器控件 | 公共终端、展示模式 |
--start-maximized |
启动时窗口自动最大化 | 统一用户体验 |
--incognito |
直接以无痕模式启动 | 隐私需求 |
--disable-extensions |
禁用所有扩展 | 故障排查、性能测试 |
--disable-extensions-except=<路径> |
禁用除指定路径外的所有扩展 | 安全控制 |
--disable-popup-blocking |
禁用弹窗拦截 | 测试特定网页行为 |
--disable-default-apps |
禁止安装 Chrome 默认应用(如 PDF 查看器) | 精简安装 |
--disable-sync |
禁用 Google 账号同步功能 | 企业隐私策略 |
--disable-background-networking |
禁止后台网络通信(如自动更新、安全检测) | 减少资源占用 |
--disable-breakpad |
禁用崩溃报告上传 | 隐私保护 |
--disable-infobars |
隐藏提示栏(如“Chrome 由管理员管理”) | 自动化测试 |
--no-default-browser-check |
跳过默认浏览器检查 | 避免提示干扰 |
--noerrdialogs |
禁止显示错误对话框(如崩溃提示) | 无人值守运行 |
--disable-web-security |
关闭同源策略(危险,仅用于开发) | 前端开发调试 |
--user-data-dir=<路径> |
指定自定义用户数据目录 | 多实例并行测试 |
--load-extension=<路径> |
启动时加载指定扩展 | 扩展开发调试 |
--proxy-server=<地址:端口> |
强制使用指定代理服务器 | 网络调试 |
--lang=<语言代码> |
设置浏览器语言(如 --lang=zh-CN) | 多语言环境 |
--remote-debugging-port=<端口> |
启用远程调试(DevTools 监听指定端口) | 自动化工具(如 Puppeteer) |
--headless |
无界面模式运行(需配合 --disable-gpu) | 服务器端渲染/测试 |
--disable-gpu |
禁用 GPU 硬件加速(解决渲染问题) | 兼容性故障排查 |
--autoplay-policy=no-user-gesture-required |
允许自动播放媒体(无需用户交互) | 多媒体应用 |
--allow-running-insecure-content |
允许加载混合内容(HTTP + HTTPS) | 测试老旧网站 |
--host-rules="MAP * 127.0.0.1" |
重定向所有请求到本地(调试劫持) | 开发环境模拟 |
4.3 企业策略配置
企业策略配置是通过组策略配置Chrome行为的一种方式,需要先下载配置模板放到系统指定目录以开启,下面是详细步骤。
- 下载并解压缩 基于 XML 的管理模板 (ADMX)。
- 打开
GoogleUpdateAdmx文件夹。 - 将
google.admx和GoogleUpdate.admx复制到Policy Definitions(策略定义)文件夹(例如:C:\Windows\PolicyDefinitions)。 - 将
GoogleUpdateAdmx/zh-CN文件夹中的google.adml和GoogleUpdate.adml文件复制到Policy Definitions(策略定义)文件夹下的en-US文件夹(例如:C:\Windows\PolicyDefinitions\en-US)。 - 打开组策略,然后转到
计算机配置接着点击策略接着点击管理模板接着点击Google,验证模板是否已正常加载。
相关文档:
组策略的配置底层以注册表的形式存在,所以也可以通过更改注册表的形式来设置相应功能,部分设置示例如下。
更新组策略或注册表后,打开 Chrome,可以访问 chrome://policy/ 来查看已经生效的策略。
|
|