playwright
微软出品的跨浏览器自动化测试框架,支持 Chromium/Firefox/WebKit 一套 API
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软出品的跨浏览器自动化测试框架,支持 Chromium/Firefox/WebKit 一套 API
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
做前端开发的朋友,大概都有过这样的经历:写完一个功能,本地跑得好好的,一上线才发现 Chrome 能用、Firefox 报错、Safari 直接白屏。浏览器兼容性问题永远是前端工程师的噩梦——光是为了在不同浏览器里复现同一个 Bug,就得来回切换环境,一遍遍手动操作。
有没有一种工具,能用一套 API 同时驱动 Chromium、Firefox 和 WebKit 三大浏览器,自动完成所有重复性的浏览器测试工作?微软用 Playwright 交出了答案。

图1:Playwright VS Code 调试模式,支持逐行追踪和实时操作录制
Playwright 由 Microsoft 主导开发,2019 年 11 月正式开源。在此之前,业内主流的浏览器自动化工具是 Selenium 和 Puppeteer。Selenium 历史悠久但协议复杂、速度慢;Puppeteer 只支持 Chrome,功能单一。微软在内部积累了大量的浏览器测试需求后,决定打造一个真正为现代 Web 应用设计的测试框架。
Playwright 的核心设计理念是**"一条 API,多种浏览器"**,同时它还解决了几个长期痛点:
time.sleep(),Playwright 会自动等待元素出现和可交互状态,大幅减少 flaky testPlaywright 是一个典型的 TypeScript Monorepo 项目,仓库下包含 27 个 npm 子包,各司其职:
| 子包 | 职责 |
|---|---|
playwright-core | 核心引擎,跨浏览器通用逻辑 |
playwright | 面向用户的统一入口包 |
playwright-chromium / playwright-firefox / playwright-webkit | 各浏览器专有驱动 |
playwright-test | 官方测试框架 @playwright/test |
trace-viewer | 可视化 trace 回放工具(Playwright 最大的亮点之一) |
recorder | 录制操作、自动生成测试代码的 GUI 工具 |
dashboard | 测试报告 Dashboard |
html-reporter | HTML 格式测试报告生成器 |
protocol | 与浏览器 DevTools Protocol 通信的协议层 |
extension | VS Code 插件 |
Playwright 主要使用 TypeScript 开发,底层通过 Chromium DevTools Protocol (CDP)、Firefox's Firefox Remote Protocol (FDP) 和 WebKit 的 WebDriver 三套协议与浏览器通信。Playwright 团队为每套协议都实现了统一的上层抽象,开发者完全不需要关心底层差异。
有意思的是,Playwright 还内置了 AI 功能:fix-with-ai 功能可以自动分析测试失败原因并给出修复建议。

图2:Playwright HTML 报告,直观展示测试通过率、失败用例和截图对比
微软在 Microsoft Artifact Registry 发布官方 Docker 镜像,将 Playwright 浏览器和所有系统依赖打包在一起:
# 拉取最新镜像(包含浏览器预装)
docker pull mcr.microsoft.com/playwright:v1.63.0-noble
# 运行测试脚本
docker run --rm \
-v $(pwd):/workspace \
mcr.microsoft.com/playwright:v1.63.0-noble \
npx playwright test
镜像基于 Ubuntu Noble (24.04),预装了 Chromium、Firefox、WebKit 三大浏览器引擎以及所有系统依赖(字体库、媒体解码器等),开箱即用。
npm init playwright@latest
# 或
npm install playwright
npx playwright install --with-deps chromium
Playwright CLI 会自动下载对应版本的浏览器二进制文件,首次安装需要等待下载。
# 在 VS Code 中安装 "Playwright Test for VS Code" 插件
# 支持:录制操作 → 生成代码 → 一键运行 → trace 回放
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux (Ubuntu/Debian)、macOS、Windows |
| Node.js | ≥ 18 |
| 内存 | 2GB+ |
| 磁盘 | 2GB+(含浏览器二进制) |
| GPU | 不需要(纯 CPU 运行) |
import { test, expect } from '@playwright/test';
test('用户登录流程', async ({ page }) => {
await page.goto('https://example.com/login');
await page.fill('#username', 'testuser');
await page.fill('#password', 'password123');
await page.click('button[type="submit"]');
await expect(page).toHaveURL(/.*dashboard/);
});
// 测试 API 响应后,验证页面渲染
const apiData = await page.request.get('/api/user-profile');
expect(apiData.ok()).toBeTruthy();
await expect(page.locator('.user-name')).toHaveText('testuser');
await page.goto('https://example.com/dashboard');
await page.setViewportSize({ width: 1920, height: 1080 });
await page.screenshot({ path: 'dashboard.png', fullPage: true });
// 对比历史截图,检测 UI 退化
✅ 优势:
⚠️ 局限:
page.on('request') 在不同浏览器中的行为略有差异Playwright 的出现标志着浏览器自动化测试进入"现代化"阶段。它不仅是测试工具,更是一个通用的浏览器自动化平台:
playwright 作为 Python 绑定的流行,使得数据科学家也能轻松实现网页数据采集从数据看,Playwright 在 2025-2026 年间增长迅猛,成为 GitHub 上最受欢迎的浏览器自动化项目之一。