puppeteer
puppeteer
#status / growing
#type / resource
#tech / dev
#resource / puppeteer
#media / tool
[!info] related notes playwright
puppeteer
基于 chrome mcp 的 mcp
| 特性 | Puppeteer (Google) | Playwright (Microsoft) |
|---|---|---|
| 浏览器支持 | Chromium 绝对优先。对 Firefox 支持有限/实验性,不支持 WebKit (Safari)。 | 全平台霸主。开箱即用,原生支持 Chromium、WebKit (Safari) 和 Firefox。 |
| 等待机制 (最痛点) | 偏手动。你需要经常写 waitForSelector 或 waitForTimeout。如果网络或渲染有一点波动,极易产生时过时挂的“幽灵测试 (Flaky Tests)”。 | 自动等待 (Auto-waiting)。在执行点击或输入前,它会自动检查元素是否可见、稳定、可接收事件。极大地减少了样板代码。 |
| 执行速度与隔离 | 通常通过打开新标签页 (Pages) 来隔离测试,或者频繁启动/关闭浏览器进程,资源开销较大。 | 引入了 Browser Context。只需启动一次浏览器,就能在几毫秒内创建极其轻量、状态完全隔离的上下文(类似无数个独立的隐身窗口),并发测试速度极快。 |
| 工具定位 | 只是一个纯粹的自动化控制库。如果你要写测试,需要自己费时费力去集成 Jest、Mocha 等外部测试框架。 | 是一个完整的端到端 (E2E) 测试框架。自带极其强大的 Playwright Test 运行器、断言库、时间旅行 UI 调试模式和 HTML 报告生成器。 |
| 多页面与 Iframe | 处理多标签页跳转、或者深层嵌套的 Iframe 时,API 相对繁琐,上下文切换容易丢失。 | 架构层面原生支持跨域多页面的无缝穿梭,操控 Iframe 内的元素就像操控当前页面的普通 DOM 一样自然。 |