Playwright 第1章:简介与安装
Playwright 是微软开发的开源端到端自动化测试框架,支持 Chromium、Firefox 和 WebKit 三大浏览器引擎。它提供统一的 API 来编写跨浏览器测试,支持现代 Web 特性如 Shadow DOM、单页应用等。
什么是 Playwright
Playwright 是一个用于 Web 自动化测试和爬虫的 Node.js 库,它通过单个 API 控制 Chromium、Firefox 和 WebKit 浏览器。与传统的自动化工具不同,Playwright 采用浏览器上下文隔离机制,每个测试实例拥有独立的浏览器环境。
核心特性
| 特性 | 描述 |
|---|---|
| 跨浏览器 | 支持 Chromium、Firefox、WebKit |
| 自动等待 | 内置智能等待机制,无需手动 sleep |
| 网络拦截 | 可拦截、修改和模拟网络请求 |
| 移动端模拟 | 内置设备描述,模拟移动端测试 |
| 并行执行 | 支持多浏览器、多线程并行测试 |
| 代码生成 | 提供 codegen 工具录制脚本 |
与 Selenium 对比
| 对比维度 | Playwright | Selenium WebDriver |
|---|---|---|
| 安装复杂度 | 简单(npm install) | 需要安装各浏览器驱动 |
| API 设计 | 现代、简洁 | 历史包袱较重 |
| 自动等待 | 内置自动等待 | 需手动等待 |
| 浏览器支持 | Chromium + Firefox + WebKit | 支持全平台 |
| 网络控制 | 原生支持拦截和 Mock | 需借助代理 |
| 测试框架 | @playwright/test 集成 | 需额外配置 |
与 Cypress 对比
| 对比维度 | Playwright | Cypress |
|---|---|---|
| 浏览器支持 | 三大引擎 | 仅 Chromium 系列 |
| 多标签页 | 原生支持 | 有限支持 |
| iframe | 原生支持 | 支持 |
| 语言支持 | JavaScript/TypeScript/Python/.NET/Java | 仅 JavaScript/TypeScript |
| 并行执行 | 原生支持 | 需 Dashboard 付费 |
| 速度 | 快 | 快 |
系统要求
操作系统
- Windows:Windows 10+,Windows Server 2016+
- macOS:12 Monterey 及以上
- Linux:Ubuntu 20.04+,Debian 11+,CentOS 9+(需手动安装系统依赖)
运行时环境
- Node.js:18 及以上版本
- npm:8 及以上版本(或使用 yarn/pnpm)
安装 Playwright
基础安装
使用 npm 安装 Playwright 库:
npm init -y
npm install playwright
安装浏览器
Playwright 需要下载浏览器二进制文件:
# 安装所有浏览器(Chromium、Firefox、WebKit)
npx playwright install
# 仅安装 Chromium
npx playwright install chromium
# 安装带系统依赖的浏览器(Linux)
npx playwright install --with-deps
安装 Playwright Test
如果您使用 @playwright/test 测试框架:
npm init playwright@latest
# 或
npm install -D @playwright/test
npx playwright install
Docker 安装
Playwright 官方提供 Docker 镜像,适合 CI/CD 环境:
# 拉取 Playwright Docker 镜像
docker pull mcr.microsoft.com/playwright:v1.45.0-focal
# 运行测试
docker run -it --rm \
-v $(pwd):/workspace \
-w /workspace \
mcr.microsoft.com/playwright:v1.45.0-focal \
npx playwright test
注意:Docker 命令中使用 $(pwd) 语法,在 TypeScript 模板字符串中需写为 \$(pwd)。
验证安装
创建简单的验证脚本 verify.mjs:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
console.log('页面标题:', title);
await browser.close();
运行:
node verify.mjs
如果输出 页面标题: Example Domain,说明安装成功。
常见安装问题
Linux 系统依赖缺失
# Ubuntu/Debian
npx playwright install --with-deps
# 或手动安装
sudo apt-get install -y \
libnss3 libnspr4 libatk1.0-0 \
libatk-bridge2.0-0 libcups2 libdrm2 \
libdbus-1-3 libxcb1 libxcomposite1 \
libxdamage1 libxfixes3 libxrandr2 \
libgbm1 libpango-1.0-0 libcairo2 \
libasound2
权限错误
如果遇到 EACCES 权限错误:
# 设置浏览器缓存目录
PLAYWRIGHT_BROWSERS_PATH=/path/to/custom/dir npx playwright install
网络超时
浏览器下载超时的情况,可以设置代理:
# HTTP 代理
HTTPS_PROXY=http://proxy.example.com:8080 npx playwright install
# 或使用镜像
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com npx playwright install
总结
Playwright 是一个功能强大的端到端测试框架,安装过程简单直接。根据项目需求选择合适的安装方式,推荐使用 @playwright/test 配合 npm init playwright@latest 初始化项目。安装完成后务必验证浏览器和 API 是否正常工作,确保环境配置正确。