1. Playwright/Puppeteer 在自动化测试的 CDP(Chrome DevTools Protocol)
讲解 Playwright/Puppeteer 在自动化测试中如何通过 CDP(Chrome DevTools Protocol)控制浏览器?
- CDP 与浏览器的通信机制
- Puppeteer/Playwright 的封装
- 自动化测试中的典型应用
CDP(Chrome DevTools Protocol)是 DevTools 与 Chrome 之间通信的协议,通过 WebSocket 以 JSON 消息交互,包含 Page、Runtime、Network、DOM 等域。Puppeteer 和 Playwright 都是对 CDP 的封装:它们建立 WebSocket 连接,发送 CDP 命令(如 Page.navigate、Runtime.evaluate)并处理事件,从而驱动浏览器执行导航、点击、截图、采集性能等操作。自动化测试中,Playwright 原生支持多浏览器(Chromium/Firefox/WebKit),Puppeteer 聚焦 Chromium,二者都提供高层的 Element、Page、Locator API,屏蔽了底层 CDP 细节。
理解 CDP 是理解自动化框架的钥匙。Puppeteer/Playwright 的价值在于把散落的 CDP 命令封装成友好的 API,并处理生命周期、等待、事件等细节,让测试更健壮。
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('text=登录');
await page.screenshot({ path: 'shot.png' });
await browser.close();
})();