Claude Code完整配置指南:基于MCP协议的AI编程助手实战
2026/7/24 16:20:41
// 引入 Puppeteer 库 const puppeteer = require('puppeteer'); (async () => { // 启动无头浏览器 const browser = await puppeteer.launch(); const page = await browser.newPage(); // 访问目标网页 await page.goto('https://example.com'); // 在页面上下文中执行 JavaScript 获取元素文本 const text = await page.evaluate(() => { const el = document.querySelector('h1'); return el ? el.innerText : null; }); console.log(text); // 输出抓取的标题文本 await browser.close(); // 关闭浏览器 })();该脚本适用于批量抓取或监控页面内容变化,极大提升调试与测试效率。| 方法 | 优点 | 缺点 |
|---|---|---|
| 手动检查 | 无需编码,即时可见 | 无法复用,效率低 |
| CSS 选择器 | 语法简洁,兼容性强 | 动态类名易失效 |
| XPath | 定位灵活,支持复杂路径 | 可读性较差 |
// 浏览器端接收更新消息 new WebSocket('ws://localhost:3000/ws').onmessage = (event) => { const data = JSON.parse(event.data); if (data.type === 'reload') window.location.reload(); };上述代码监听来自开发服务器的更新通知。当 VSCode 保存文件触发重建时,服务器通过 WebSocket 主动推送消息,浏览器接收到reload指令后刷新页面。// 编译时注入节点ID const ast = parse(code); traverse(ast, { enter(path) { if (path.isJSXElement()) { path.node.debugId = generateId(); // 绑定源码位置 } } });上述逻辑在语法树遍历时为每个JSX元素打标,后续渲染时可通过debugId反查原始文件路径与行列号。const ws = new WebSocket('ws://localhost:9222/devtools/page/ABC123'); ws.onmessage = (event) => { const message = JSON.parse(event.data); if (message.method === 'DOM.documentUpdated') { // 触发结构同步 fetchFullTree(); } };该逻辑监听documentUpdated事件,一旦检测到 DOM 更新即拉取最新树状结构,确保追踪实时性。DOM.getOuterHTML和DOM.resolveNode方法,可将运行时节点映射至源码位置。结合 source map 解析,实现从渲染树到 JSX 或模板代码的反向定位。DOM.pushNodesByBackendIdsToFrontendDebugger.getEventListenersDOM.querySelectorAll