Playwright 简介

1、Playwright 是什么

Playwright 是微软 2020 年开源的现代浏览器自动化 / 端到端测试框架 ,用统一 API 控制 Chromium、Firefox、WebKit 三大引擎,无需单独下载驱动,跨平台、跨语言、支持无头 / 有头模式。

  • 核心特点:自动等待、网络拦截、录制生成代码、移动端模拟、截图 / 录屏 / 追踪、上下文隔离、并行执行
  • 支持语言:TypeScript/JavaScript、Python、Java、.NET
  • 对比 Selenium:无驱动、更稳定、更快、内置智能等待、API 更简洁

2、它怎么做自动化测试(原理 + 流程)

核心原理

  • 直接控制浏览器内核 :通过浏览器原生协议(Chrome DevTools Protocol 等)通信,无中间层,比 Selenium 更稳定、更快。
  • Browser → Context → Page
    • Browser:浏览器实例(如 Chromium)。
    • Context:隔离会话(类似隐身窗口,独立 Cookie / 缓存),支持多用户并行。
    • Page:标签页,所有操作(跳转、点击、输入)都在 Page 上完成。
  • 自动等待机制 :操作前自动等待元素可见、可点击、可编辑 ,断言自动重试,极少需要 sleep

自动化测试基本流程(五步)

安装

复制代码
# Node.js
npm init -y
npm i -D @playwright/test
npx playwright install  # 自动装浏览器

# Python
pip install playwright
playwright install

录制生成代码(零代码起步)

复制代码
npx playwright codegen https://example.com

弹出浏览器,手动操作(登录、下单),自动生成脚本,减少手写成本

编写测试脚本(示例:登录)

复制代码
// JS/TS
import { test, expect } from '@playwright/test';
test('登录成功', async ({ page }) => {
  await page.goto('https://example.com/login'); // 跳转
  await page.fill('#user', 'test'); // 输入
  await page.fill('#pwd', '123456');
  await page.click('button[type="submit"]'); // 点击
  await expect(page.locator('.user-name')).toHaveText('test'); // 断言
});

运行测试

复制代码
npx playwright test               # 运行所有用例
npx playwright test --ui          # UI模式(调试/观察)
npx playwright test --browser=firefox  # 指定浏览器

结果与调试

  • 自动生成HTML 报告、截图、视频、追踪日志(trace.zip)
  • Trace Viewer 回放每一步,定位失败原因。

零代码自动化测试

Playwright 原生支持 全程录制 + 一键回放零基础、不用手写一行代码,就能完成自动化测试,非常适合不会编码、快速落地 UI 自动化的场景。

1. 录制(自动生成完整脚本)

执行命令:

复制代码
# JS/TS 技术栈
npx playwright codegen 目标网址
# Python 技术栈
playwright codegen 目标网址

弹出可视化浏览器,你只需要手动正常操作 :点击、输入、下拉、弹窗、分页、登录、表单提交等Playwright 会实时自动记录所有操作、元素定位、等待逻辑,自动生成完整可运行脚本。

示例
复制代码
npx playwright codegen https://www.baidu.com/ -o baidu.test.js
  • 用 -o 参数指定保存路径

  • 文件名:必须以.spec.js.test.js结尾,npx playwright test 这个命令默认只查找文件名以 .spec.js.test.js 结尾的文件。

参数 作用 示例
-o, --output 指定保存路径 -o ./test.js
--target 指定语言 --target python
-b, --browser 指定浏览器 -b firefox
--save-storage 保存登录状态 --save-storage auth.json

2. 保存脚本

录制完成后关闭浏览器,录制工具会自动输出代码,你直接复制保存为测试文件即可。

3. 一键回放执行

复制代码
# 批量运行所有录制用例
npx playwright test
# 可视化模式回放(看操作步骤、调试)
npx playwright test --ui

全程无需改代码、无需手写定位器、无需加等待时间,自动跑完全流程。

示例
复制代码
# 运行特定文件
npx playwright test baidu.test.js

# 运行所有测试
npx playwright test

# 显示浏览器窗口(非无头模式)
npx playwright test --headed

# 调试模式(慢速执行)
npx playwright test --debug

3、适用哪些场景

1)Web 端到端(E2E)测试(最常用)

  • 验证完整用户流程:登录→浏览→加购→下单→支付→退款。
  • 覆盖多浏览器 / 多设备:Chrome、Firefox、Safari、手机 / 平板模拟。
  • 适合:SPA(React/Vue)、管理后台、电商、SaaS 等。

2)UI 回归测试

  • 迭代中防止界面 / 功能意外改动,自动回归核心用例。
  • 支持视觉对比(screenshot),快速发现样式偏差。

3)网页数据采集(爬虫)

  • 轻松处理动态渲染(JS 加载)、登录态、验证码(可对接打码平台)、IP 代理
  • 比 requests/beautifulsoup 更适合复杂交互 / 渲染页面。

4)移动端 Web 测试

  • 内置手机设备模拟(iPhone/Android),一键切换视口、UA、触摸事件。
  • 测试H5、小程序 webview、移动端适配

5)自动化重复操作

  • 自动报表导出、数据批量录入、定时任务、监控页面可用性

6)CI/CD 集成

  • 无缝接入 GitHub Actions、GitLab CI、Jenkins ,每次提交自动跑测试,快速发现 bug

4、不适合的场景

  • 重度图形 / 游戏类 Web(WebGL/Canvas,元素定位困难)。
  • 性能测试 / 压力测试(侧重功能与 UI,非高并发压测)。
  • 原生 App 测试(仅支持 Web,不支持 iOS/Android 原生控件)。
相关推荐
goldenrolan5 小时前
A公司物料替代测试系统 v1.7:从需求到 exe/apk 的 AI 辅助全链路实践
android·自动化测试·软件测试·python·ai
程序员小远7 小时前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
程序员三藏1 天前
Web自动化测试详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
程序员龙叔1 天前
从 0 开始学习 AI 测试 - 从接口测试来教你如何用 AI 来生成自动化测试代码
自动化测试·软件测试·python·软件测试工程师·测试工具·性能测试·ai测试
纳米软件3 天前
CSDN:5G_6G毫米波射频芯片测试,如何解决OTA测试中的“测不准”与“效率低”?
自动化测试·5g·ate测试·ate测试系统·电子测试测量·电子测试工具
大貔貅喝啤酒4 天前
Python Requests库教程
自动化测试·python·requests库
测试开发技术4 天前
AI 测试赋能全流程实战 | Agent Skill + AI 赋能「需求分析」
自动化测试·人工智能·自动化·需求分析·ai编程·ai测试
007张三丰7 天前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架