一、项目简介与核心特性
Playwright 是微软官方开源的 Web 自动化与端到端测试框架,通过统一的 API 同时驱动 Chromium、Firefox 和 WebKit 三大浏览器引擎。它不仅是测试框架,也被广泛用于网页爬虫、截图、PDF 生成以及 AI 智能体的浏览器控制。
Playwright 的核心能力包括:自动等待(Auto-wait)机制消除人工 sleep、Web-First 断言自动重试、浏览器上下文级别的测试隔离、网络拦截与路由模拟、Trace Viewer 完整执行追踪、并行测试调度,以及对移动端设备的仿真支持。当前版本内置 Chromium 157、Firefox 158 和 WebKit 27.2,覆盖 Linux、macOS、Windows 三大桌面平台。
除了 JavaScript 版本,Playwright 还提供 Python、.NET 和 Java 绑定,团队可以在同一套项目中选择最熟悉的语言进行自动化开发。
二、环境准备与依赖要求
在安装 Playwright 之前,请确保开发环境满足以下条件:
- Node.js:建议安装 LTS 长期支持版本(20 及以上),可通过
node -v确认。 - 操作系统:Windows 10+、macOS 12+、或主流 Linux 发行版(Ubuntu 20.04+、Debian 11+ 等)。
- 磁盘空间:首次安装需要下载三个浏览器内核,约占用 500MB 至 1GB 空间。
- 网络:安装浏览器二进制文件时需要访问微软的 CDN,如在国内网络环境下可能需要配置代理或镜像。
如果你使用 Python 版本,还需要 Python 3.9 及以上版本。.NET 版本需要 .NET 6 SDK 及以上。
三、安装部署(多种方式)
方式一:Playwright Test 测试运行器(推荐)
这是最常用的端到端测试安装方式,在项目目录下执行:
npm init playwright@latest命令行向导会询问是否使用 TypeScript、是否添加 GitHub Actions 工作流以及测试文件存放目录。完成后自动安装 @playwright/test 包并下载浏览器。
如果手动添加依赖,则执行:
npm i -D @playwright/test
npx playwright installnpx playwright install 会下载 Chromium、Firefox 和 WebKit 三个浏览器。如果只需要某一个浏览器,可指定:npx playwright install chromium。在 Linux 服务器上还需要安装系统依赖:npx playwright install-deps。
方式二:Playwright Library 库模式
如果你只需要在脚本中控制浏览器(如爬虫、截图、PDF 生成),不使用测试运行器:
npm i playwright
npx playwright install方式三:Playwright MCP(AI 智能体接入)
Playwright MCP 服务器让 AI 编程助手(如 VS Code、Cursor、Claude Desktop)通过 Model Context Protocol 控制浏览器。在 MCP 客户端配置中添加:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}在 Claude Code 中可直接执行:claude mcp add playwright npx @playwright/mcp@latest。
方式四:Playwright CLI(编程代理专用)
npm install -g @playwright/cli@latest
playwright-cli install --skills方式五:Python 版本
pip install playwright
playwright install方式六:源码编译
从 GitHub 仓库 克隆后进行开发:
git clone https://github.com/microsoft/playwright.git
cd playwright
npm install
npm run build四、快速上手与基本配置
安装完成后,编写第一个测试文件 tests/example.spec.ts:
import { test, expect } from '@playwright/test';
test('has title', async ({ page }) => {
await page.goto('https://playwright.dev/');
await expect(page).toHaveTitle(/Playwright/);
});
test('get started link', async ({ page }) => {
await page.goto('https://playwright.dev/');
await page.getByRole('link', { name: 'Get started' }).click();
await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
});运行测试:
npx playwright test测试默认以无头模式在 Chromium、Firefox、WebKit 三个浏览器上并行执行。添加 --headed 参数可看到浏览器界面,添加 --debug 进入调试模式。
在 playwright.config.ts 中可以配置测试目录、超时时间、浏览器项目、重试次数、Trace 录制等:
export default defineConfig({
use: {
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
],
});五、进阶配置与使用场景
定位器(Locators)
Playwright 推荐使用语义化定位器,它们模拟用户视角查找元素,比 CSS 选择器更健壮:
page.getByRole('button', { name: 'Submit' })
page.getByLabel('Email')
page.getByPlaceholder('Search...')
page.getByTestId('login-form')登录状态复用
首次测试登录后保存存储状态,后续测试直接复用,避免重复登录:
await page.context().storageState({ path: 'auth.json' });
// 其他测试中引用
test.use({ storageState: 'auth.json' });Trace Viewer 执行追踪
测试失败时自动录制 Trace,包含每一步的 DOM 快照、网络请求、控制台日志和截图:
npx playwright show-trace trace.zip
网络拦截与截图
拦截图片请求以加速测试,或生成 PDF:
await page.route('**/*.{png,jpg,jpeg}', route => route.abort());
await page.pdf({ path: 'page.pdf', format: 'A4' });VS Code 集成
安装 VS Code 扩展 后,可以在编辑器中点击运行测试、设置断点、使用 CodeGen 录制操作自动生成测试代码。
六、常见问题(FAQ)与报错解决
Q1:安装浏览器时下载失败或超时怎么办?
这通常是网络问题。可以设置国内镜像环境变量后重新安装:
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install在 Linux 上还需要安装系统依赖库:npx playwright install-deps,否则启动浏览器时会报缺少 libnss3、libatk 等错误。
Q2:测试报 TimeoutError: page.goto: Timeout 30000ms exceeded
目标网站加载缓慢或无法访问。可以在配置中延长超时时间:await page.goto(url, { timeout: 60000 }),或检查网络代理设置。
Q3:元素点击报 Timeout 或 Waiting for selector 错误
这是因为元素尚未可操作。Playwright 的自动等待机制会等待元素可见、启用且稳定后再操作。如果仍报错,检查元素是否在 iframe 中(需要 page.frameLocator()),或是否有遮罩层遮挡。
Q4:headless 模式下截图空白
通常是页面尚未渲染完成就截图。确保在截图前等待关键元素出现:await page.locator('#content').waitFor(),或使用 await page.waitForLoadState('networkidle')。
Q5:MCP 模式下 AI 无法定位页面元素
Playwright MCP 使用无障碍树与 AI 交互,确保页面元素有正确的 ARIA 标签和 role。MCP 不需要视觉模型,它通过结构化的 accessibility snapshot 识别页面内容。
七、总结与参考资源
Playwright 是微软维护的成熟 Web 自动化工具,覆盖端到端测试、浏览器控制、AI 智能体接入三大场景。其自动等待、上下文隔离和 Trace Viewer 设计大幅降低了自动化测试的维护成本。通过 npm、pip 或 Docker 均可快速部署,配合 VS Code 扩展和 MCP 服务器,既能满足传统测试团队的需求,也能为 AI 编程助手提供浏览器操作能力。
相关资源: