首页/开发/软件测试速查/Playwright 入门
自动化测试66 条

Playwright 入门

Playwright 以单一 API 驱动 Chromium、Firefox 与 WebKit,默认自动等待并内置报告、trace 与重试;npx playwright test 运行测试,支持 TypeScript、Python、Java、.NET 绑定。

软件测试速查开发更新于 2026-10-13

Playwright 是什么

Playwright 是微软开源的浏览器自动化与测试框架:用同一套 API 驱动 Chromium、Firefox 与 WebKit,默认自动等待元素就绪,并内置测试运行器、断言、重试、报告与 trace 回放。它提供 TypeScript、Python、Java、.NET 语言绑定,支持有头与无头模式、多浏览器并行、设备模拟与网络拦截。与 Selenium 相比,Playwright 将等待、定位与断言收敛为一等公民的定位器 API,写出的用例更短、更稳;与 Cypress 相比,它不在浏览器进程内运行,天然支持多标签页、多域与跨语言。

基本信息

发布方Microsoft,开源(Apache 2.0)
支持浏览器Chromium、Firefox、WebKit(引擎级驱动)
语言绑定TypeScript/JavaScript、Python、Java、.NET
核心机制定位器自动等待、web-first 轮询断言
工具链测试运行器、codegen 录制、UI 模式、trace 查看器
安装方式npm init playwright@latest 或 pip install playwright

典型使用场景

  • 端到端测试:覆盖登录、下单等关键业务链路
  • 跨浏览器回归:同一套用例在三大引擎上验证兼容性
  • 失败定位:CI 失败后打开 trace 回放操作现场与网络请求
  • 接口辅助验证:用内置 request 上下文对 API 直接断言,与 UI 用例互证
  • 设备模拟:用内置设备描述对移动端视口与触控行为做冒烟
  • 视觉回归:对截图做基线对比,捕获意外样式变化

起步命令

起步命令
npm init playwright@latest         # 初始化项目并安装浏览器二进制
npx playwright test                # 无头运行全部用例
npx playwright test --headed       # 有头模式观察真实操作过程
npx playwright test --ui           # UI 模式逐步调试
npx playwright show-report         # 打开 HTML 报告
npx playwright show-trace trace.zip  # 回放失败现场的完整 trace

最小用例

最小用例
# 打开页面并等待标题就绪
await page.goto('https://example.com');
await expect(page).toHaveTitle(/Example/);   # 自动轮询直到超时
# 按可访问性角色定位并点击
await page.getByRole('button', { name: '登录' }).click();
# 断言无 toast 报错出现
await expect(page.locator('.toast-error')).toHaveCount(0);

核心概念

概念说明使用要点
定位器 Locator对元素查询的声明式描述,惰性求值优先角色与标签等语义定位
自动等待动作与断言执行前自动等待元素可交互无需手写 sleep 或显式轮询
web-first 断言内置断言反复检查直到通过或超时断言失败信息自带实际值
trace记录操作、网络与快照的回放文件CI 失败时第一手排查材料
重试对失败用例按策略重跑只有判定为环境抖动的用例才配置
首次使用需安装浏览器二进制:npx playwright install --with-deps;Linux 容器里缺少系统依赖时,--with-deps 会一起安装,否则 WebKit 等浏览器无法启动。
定位优先级建议:可访问性角色与标签(getByRole/getByLabel)优于文本,文本优于 CSS,CSS 优于 XPath;细节见 playwright-locators 条目。
CI 建议配置 trace 为 on-first-retry:只在失败并进入重试时保留现场,既拿到排查材料又不让每次运行都产生大量附件。
版本管理:把 @playwright/test 与浏览器版本一起固定(playwright install 会安装与库匹配的浏览器版本),随意升级可能改变断言行为与默认超时。
大规模套件用分片并行:npx playwright test --shard=1/3 配合 CI 多机执行,同时复核测试数据隔离是否支撑并发。
登录等前置链路不必每个用例重跑:用 setup 项目登录一次并保存 storageState,其余用例直接复用登录态,套件时长能缩短一大截。
需要构造异常分支时,优先用 route 拦截网络请求并返回指定响应,比依赖后端真实故障环境更可控、可重复。

易错点

  • 未固定 @playwright/test 版本:升级后断言与默认值变化,历史用例批量失败
  • 容器环境缺少系统依赖直接运行 WebKit:浏览器启动失败,需要 --with-deps 或补齐依赖包
  • 用 CSS 类名等实现细节定位元素:一次样式重构就大面积失效,应改用语义定位
  • 在用例里手写 sleep 或固定等待:机器快慢都会造成假失败或空转,自动等待已经能覆盖多数场景
  • 忽略 trace 与报告直接猜原因:失败定位时间大幅拉长,应先把失败现场留好再动手改
  • 每个用例都重新走一遍登录等长前置流程:套件时长成倍增加,应抽出全局 setup 与登录态复用
  • 视觉断言只对比整页截图且无容差:样式微调即大面积误报,应限定对比区域并设置合理阈值

数据来源与参考

  • Playwright 官方文档(playwright.dev)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌