自动化与脚本
在终端或脚本中自动化 Chrome 页面并进行调试…
在终端或 shell 脚本中需要通过 chrome-devtools-mcp CLI 控制浏览器、执行页面交互、导航、模拟、性能/内存/网络分析、审计、扩展与 PWA 管理时适用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在终端或脚本中自动化 Chrome 页面特定
解决思路
- 首次使用 CLI 前,查看 `references/installation.md` 完成设置;安装是一次性前置,不属于常规 AI 工作流。
- 直接运行工具;若不知道目标页面 ID,运行 `chrome-devtools list_pages` 查找。后台服务器会隐式启动;不要每次使用前运行 `start`/`status`/`stop`。
- 使用 `chrome-devtools take_snapshot <pageId>` 获取元素 `<uid>`。
- 使用 `chrome-devtools click <pageId> <uid>`、`chrome-devtools fill <pageId> <uid> <value>` 等执行操作;状态跨命令保持。
- 解析快照输出中的 `uid=...` 行来获取元素 UID,例如 `uid=1_0 RootWebArea ...` 和 `uid=1_1 heading ...`。
- 默认 CLI 有完整文件系统访问(`--allowUnrestrictedPaths=true`),允许文件保存参数(`--filePath`、`--outputDirPath`)和 `upload_file` 访问系统任意文件。
- 若要限制文件访问到 OS 临时目录,传 `--allowUnrestrictedPaths=false`。
- 命令格式为 `chrome-devtools <tool> [arguments] [flags]`。
- 必填参数按位置传递;可选参数使用 flags。
- 对任何命令使用 `--help` 查看用法详情。
- 输出默认是类似 Markdown 的纯文本;传 `--output-format=json` 获取 JSON。
- 运行 `chrome-devtools take_snapshot 1` 获取页面文本快照,以得到元素 UID。
- 运行 `chrome-devtools click 1 "id"` 点击提供的元素。
- 运行 `chrome-devtools click 1 "id" --dblClick true --includeSnapshot true` 双击并返回快照。
- 运行 `chrome-devtools drag 1 "src" "dst"` 将元素拖到另一个元素上。
- 运行 `chrome-devtools drag 1 "src" "dst" --includeSnapshot true` 拖动元素并返回快照。
- 运行 `chrome-devtools fill 1 "id" "text"` 向输入框、文本域输入文本或选择选项。
- 运行 `chrome-devtools fill 1 "id" "text" --includeSnapshot true` 填充元素并返回快照。
- 运行 `chrome-devtools handle_dialog 1 accept` 处理浏览器对话框(accept/dismiss)。
- 运行 `chrome-devtools handle_dialog 1 dismiss --promptText "hi"` 关闭对话框并带 prompt 文本。
- 运行 `chrome-devtools hover 1 "id"` 悬停在提供的元素上。
- 运行 `chrome-devtools hover 1 "id" --includeSnapshot true` 悬停并返回快照。
- 运行 `chrome-devtools press_key 1 "Enter"` 按下按键或组合键(`"Control+A"`、`"Escape"`)。
- 运行 `chrome-devtools press_key 1 "Control+A" --includeSnapshot true` 按下按键并返回快照。
- 运行 `chrome-devtools type_text 1 "hello"` 使用键盘向已聚焦输入框输入文本。
- 运行 `chrome-devtools type_text 1 "hello" --submitKey "Enter"` 输入文本并按下提交键。
- 运行 `chrome-devtools upload_file 1 "id" "file.txt"` 通过提供的元素上传文件。
- 运行 `chrome-devtools upload_file 1 "id" "file.txt" --includeSnapshot true` 上传文件并返回快照。
- 运行 `chrome-devtools close_page 1` 按索引关闭页面。
- 运行 `chrome-devtools list_pages` 获取浏览器中打开的页面列表。
- 运行 `chrome-devtools navigate_page 1 --url "https://example.com"` 将当前选中页面导航到 URL。
- 运行 `chrome-devtools navigate_page 1 --type "reload" --ignoreCache true` 忽略缓存重新加载页面。
- 运行 `chrome-devtools navigate_page 1 --url "https://example.com" --timeout 5000` 带超时导航。
- 运行 `chrome-devtools navigate_page 1 --handleBeforeUnload "accept"` 处理 before unload 对话框。
- 运行 `chrome-devtools navigate_page 1 --type "back" --initScript "foo()"` 后退并运行初始化脚本。
- 运行 `chrome-devtools new_page "https://example.com"` 创建新页面。
- 运行 `chrome-devtools new_page "https://example.com" --background true --timeout 5000` 在后台创建新页面。
- 运行 `chrome-devtools new_page "https://example.com" --isolatedContext "ctx"` 使用隔离上下文创建新页面。
- 运行 `chrome-devtools select_page 1` 选择页面作为后续工具调用的上下文。
- 运行 `chrome-devtools select_page 1 --bringToFront true` 选择页面并置于前台。
- 运行 `chrome-devtools emulate 1 --networkConditions "Offline"` 模拟网络条件。
- 运行 `chrome-devtools emulate 1 --cpuThrottlingRate 4 --geolocation "0x0"` 模拟 CPU 降速和地理位置。
- 运行 `chrome-devtools emulate 1 --colorScheme "dark" --viewport "1920x1080"` 模拟配色方案和视口。
- 运行 `chrome-devtools emulate 1 --userAgent "Mozilla/5.0..."` 模拟 user agent。
- 运行 `chrome-devtools resize_page 1 1920 1080` 调整选中页面窗口大小。
- 运行 `chrome-devtools performance_analyze_insight 1 "1" "LCPBreakdown"` 获取指定 Performance Insight 的更多细节(pageId、insightSetId、insightName)。
- 运行 `chrome-devtools performance_start_trace 1 --reload true --autoStop false` 开始性能 trace 记录(reload、autoStop)。
- 运行 `chrome-devtools performance_start_trace 1 --reload true --autoStop true --filePath "t.json.gz"` 开始 trace 并保存到文件。
- 运行 `chrome-devtools performance_stop_trace 1` 停止活动性能 trace。
- 运行 `chrome-devtools performance_stop_trace 1 --filePath "t.json.gz"` 停止 trace 并保存到文件。
- 运行 `chrome-devtools take_heapsnapshot 1 "./snap.heapsnapshot"` 捕获内存堆快照。
- 在启用 `--memoryDebugging=true` 后,运行 `chrome-devtools get_heapsnapshot_summary "./snap.heapsnapshot"` 获取快照摘要统计。
- 运行 `chrome-devtools compare_heapsnapshots "./base.heapsnapshot" "./target.heapsnapshot"` 比较两个快照。
- 运行 `chrome-devtools get_heapsnapshot_class_nodes "./snap.heapsnapshot" "Array"` 检查类实例。
- 运行 `chrome-devtools get_heapsnapshot_details "./snap.heapsnapshot" 123` 查看详细对象属性。
- 运行 `chrome-devtools get_heapsnapshot_dominators "./snap.heapsnapshot" 123` 获取节点的 dominator tree。
- 运行 `chrome-devtools get_heapsnapshot_duplicate_strings "./snap.heapsnapshot"` 查找重复字符串。
- 运行 `chrome-devtools get_heapsnapshot_edges "./snap.heapsnapshot" 123` 获取节点边或引用。
- 运行 `chrome-devtools get_heapsnapshot_object_details "./snap.heapsnapshot" 123` 按 node ID 获取对象详情。
- 运行 `chrome-devtools get_heapsnapshot_retainers "./snap.heapsnapshot" 123` 获取 retaining objects。
- 运行 `chrome-devtools get_heapsnapshot_retaining_paths "./snap.heapsnapshot" 123` 获取最短 retaining paths。
- 运行 `chrome-devtools close_heapsnapshot "./snap.heapsnapshot"` 释放已加载快照的内存。
- 运行 `chrome-devtools get_network_request 1` 获取页面 1 当前选中的网络请求。
- 运行 `chrome-devtools get_network_request 1 --reqid 1 --requestFilePath "req.md"` 按 id 获取请求并保存到文件。
- 运行 `chrome-devtools get_network_request 1 --responseFilePath "res.md"` 将响应体保存到文件。
- 运行 `chrome-devtools list_network_requests 1` 列出页面 1 的所有网络请求。
- 运行 `chrome-devtools list_network_requests 1 --pageSize 50 --pageIdx 0` 分页列出网络请求。
- 运行 `chrome-devtools list_network_requests 1 --resourceTypes Fetch` 按资源类型过滤请求。
- 运行 `chrome-devtools list_network_requests 1 --includePreservedRequests true` 包含保留的请求。
- 运行 `chrome-devtools evaluate_script "() => document.title" --pageId 1` 在页面 1 上执行 JavaScript 函数。
- 运行 `chrome-devtools evaluate_script "(a) => a.innerText" --pageId 1 --args 1_4` 使用 UID 参数在页面 1 上执行 JS。
- 运行 `chrome-devtools get_console_message 1 1` 按 ID 获取 console 消息。
- 运行 `chrome-devtools get_css_styles 1 "1_4"` 获取页面 1 上元素的解析 CSS 样式(inline、matched、inherited、pseudo)。
- 运行 `chrome-devtools get_css_styles 1 "1_4" --pageSize 20 --pageIdx 0` 分页获取页面 1 上元素的 CSS 样式。
- 运行 `chrome-devtools lighthouse_audit 1 --mode "navigation"` 运行导航模式 Lighthouse 审计。
- 运行 `chrome-devtools lighthouse_audit 1 --mode "snapshot" --device "mobile"` 在移动设备上运行快照模式 Lighthouse 审计。
- 运行 `chrome-devtools lighthouse_audit 1 --outputDirPath ./out` 运行 Lighthouse 审计并保存报告。
- 运行 `chrome-devtools list_console_messages 1` 列出所有 console 消息。
- 运行 `chrome-devtools list_console_messages 1 --pageSize 20 --pageIdx 1` 分页列出 console 消息。
- 运行 `chrome-devtools list_console_messages 1 --types error --types info` 按类型过滤 console 消息。
- 运行 `chrome-devtools list_console_messages 1 --includePreservedMessages true` 包含保留的消息。
- 运行 `chrome-devtools take_screenshot 1` 截取页面视口。
- 运行 `chrome-devtools take_screenshot 1 --fullPage true --format "jpeg" --quality 80` 截取整页 JPEG 并设置质量。
- 运行 `chrome-devtools take_screenshot 1 --uid "id" --filePath "s.png"` 截取元素截图。
- 运行 `chrome-devtools take_snapshot 1` 从 a11y tree 获取页面文本快照。
- 运行 `chrome-devtools take_snapshot 1 --verbose true --filePath "s.txt"` 获取详细快照并保存到文件。
- 运行 `chrome-devtools list_extensions` 列出浏览器中安装的所有 Chrome 扩展。
- 运行 `chrome-devtools install_extension "/path/to/extension"` 从给定路径安装 Chrome 扩展。
- 运行 `chrome-devtools uninstall_extension "extension_id"` 按 ID 卸载 Chrome 扩展。
- 运行 `chrome-devtools reload_extension "extension_id"` 按 ID 重新加载未打包 Chrome 扩展。
- 运行 `chrome-devtools trigger_extension_action "extension_id"` 按 ID 触发扩展默认操作。
- 在启用 `--categoryPwa=true` 后,运行 `chrome-devtools install_pwa "https://example.com/"` 通过 manifest ID 或 URL 安装 PWA。
- 运行 `chrome-devtools launch_pwa "https://example.com/"` 启动已安装 PWA。
- 运行 `chrome-devtools get_os_app_state "https://example.com/"` 获取 OS 应用安装状态。
- 运行 `chrome-devtools uninstall_pwa "https://example.com/"` 卸载 PWA 并关闭窗口。
- 实验工具默认禁用;在 `start` 时用对应 flag 启用。
- 运行 `chrome-devtools click_at 1 100 200` 在页面 1 指定坐标点击(需 `--experimentalVision=true`)。
- 运行 `chrome-devtools screencast_start 1 --filePath "screen.mp4"` 在页面 1 开始屏幕录制(需 `--experimentalScreencast=true` 和 ffmpeg)。
- 运行 `chrome-devtools screencast_stop 1` 停止页面 1 的活动屏幕录制。
- 运行 `chrome-devtools list_webmcp_tools 1` 列出页面 1 上的所有 WebMCP 工具(需 `--categoryExperimentalWebmcp=true`)。
- 运行 `chrome-devtools execute_webmcp_tool 1 "tool_name" --input '{"arg":"val"}'` 在页面 1 执行 WebMCP 工具(需 `--categoryExperimentalWebmcp=true`)。
- 运行 `chrome-devtools list_3p_developer_tools 1` 列出页面 1 上的第三方开发者工具(需 `--categoryExperimentalThirdParty=true`)。
- 运行 `chrome-devtools execute_3p_developer_tool 1 "tool_name" --params '{"arg":"val"}'` 在页面 1 执行第三方开发者工具(需 `--categoryExperimentalThirdParty=true`)。
- 运行 `chrome-devtools start` 启动或重启 chrome-devtools-mcp。
- 运行 `chrome-devtools start --headless=false` 启动并显示浏览器窗口。
- 运行 `chrome-devtools status` 检查 chrome-devtools-mcp 是否运行。
- 运行 `chrome-devtools stop` 如运行则停止 chrome-devtools-mcp。
适用边界 · 注意事项
- 未安装或未配置 chrome-devtools-mcp CLI 时不适用;首次使用需先参考 `references/installation.md` 完成安装。
- 需要严格限制文件系统访问时,不要使用默认的 `--allowUnrestrictedPaths=true`,应传 `--allowUnrestrictedPaths=false`;否则 `--filePath`、`--outputDirPath` 和 `upload_file` 可访问系统任意文件。
- 实验功能默认禁用;未在 `start` 时启用对应 flag(如 `--experimentalVision`、`--experimentalScreencast`、`--categoryExperimentalWebmcp`、`--categoryExperimentalThirdParty`)或 `--memoryDebugging=true`、`--categoryPwa=true` 时不能使用相应命令。