chrome-devtools 是一个浏览器自动化 Agent 技能,通过可执行的 Puppeteer 脚本工作,所有脚本输出 JSON,便于解析和后续处理。
【主要能力】 核心自动化脚本包括:navigate.js(导航到 URL)、screenshot.js(整页或元素截图)、click.js(点击元素)、fill.js(填写表单字段)、evaluate.js(在页面上下文中执行 JavaScript)。分析与监控脚本包括:snapshot.js(提取带元数据的交互元素)、console.js(监控控制台消息与错误)、network.js(跟踪 HTTP 请求与响应)、performance.js(测量 Core Web Vitals 并记录 trace)。
【使用方式】 安装:在 Linux/WSL 上先进入 scripts 目录运行 ./install-deps.sh 自动检测系统并安装所需依赖(支持 Ubuntu、Debian、Fedora、RHEL、CentOS、Arch、Manjaro);macOS/Windows 可跳过此步。随后运行 npm install 安装 puppeteer、debug、yargs。测试命令:node navigate.js --url https://example.com,输出 {"success": true, "url": "https://example.com", "title": "Example Domain"}。
运行模式:单条命令可直接执行,例如 node screenshot.js --url https://example.com --output ./docs/screenshots/page.png,并注明截图应始终保存到 ./docs/screenshots 目录。链式命令可通过 --close false 保持浏览器打开以复用会话,例如先 navigate 到登录页,再 fill 邮箱和密码,最后 click 提交按钮。
公共脚本选项包括:--headless false 显示浏览器窗口,--close false 保持浏览器打开以便链式调用,--timeout 30000 设置超时毫秒,--wait-until networkidle2 指定等待策略。完整选项见 ./scripts/README.md。
输出格式:所有脚本向 stdout 输出 JSON,包含 success、url 及脚本特定数据;错误输出到 stderr,格式为 {"success": false, "error": "..."}。可用 jq 提取字段或保存到文件,例如 node performance.js --url https://example.com | jq '.vitals.LCP'。
【适用场景】 网页抓取:通过 evaluate.js 结合页面脚本提取结构化数据,例如用 jq 获取结果。性能测试:运行 performance.js 获取 LCP 等指标并按阈值判断。表单自动化:先 fill 再 click 完成提交。错误监控:用 console.js 按 error、warn 类型和持续时间采集消息计数。查找元素:先用 snapshot.js 发现选择器,例如 node snapshot.js --url https://example.com | jq '.elements[] | {tagName, text, selector}'。
【限制与故障排查】 常见错误包括:找不到 puppeteer 包时需在 scripts 目录运行 npm install;Linux/WSL 缺少 libnss3.so 等共享库时运行 ./install-deps.sh 或按文档手动安装 libnss3、libnspr4、libasound2t64 等;浏览器进程启动失败需检查系统依赖、确认 Chrome 已下载(ls ~/.cache/puppeteer),可尝试 npm rebuild 后 npm install;Chrome 未找到时 Puppeteer 会在 npm install 时自动下载,失败可执行 npx puppeteer browsers install chrome。
脚本问题:元素未找到先用 snapshot.js 获取正确选择器;脚本挂起可增大 timeout 或更改等待策略(--wait-until load 或 domcontentloaded);截图空白可等待 networkidle2 并增大 timeout;脚本权限不足可执行 chmod +x *.sh。
高级用法:可基于共享库 lib/browser.js 编写自定义脚本(导入 getBrowser、getPage、closeBrowser、outputJSON);也可直接访问 CDP,例如 page.createCDPSession() 后调用 Emulation.setCPUThrottlingRate。参考文档位于 ./references/,涵盖 CDP Domains 参考(47 个 Chrome DevTools Protocol 域)、Puppeteer 快速参考和性能分析指南。外部资源包括 Puppeteer 文档、Chrome DevTools Protocol 及脚本 README。