用Playwright之前,先看清这4个局限
假如你接手一个老项目,每次发版前都要手工点一遍注册、登录、下单、支付流程,20多个页面,点一圈半小时,还经常漏。这是很多Web开发团队的日常。Playwright 就是为把这件事自动化而生的。
读完这篇文章,你会了解 Playwright 的核心能力,并知道每个功能怎么用。你需要有 Python 或 Node.js 基础,跟着就能上手。
Playwright 是什么?
Playwright 是微软开源的一个浏览器自动化库,支持 Chromium、Firefox 和 WebKit 三种内核,也支持 Python、Java、.NET、JavaScript 等主流语言。一句话概括:用一套代码控制多个真实浏览器,自动完成网页上的操作。
和 Selenium 这种老牌工具相比,Playwright 更关注“脚本稳定”。它内置了自动等待、网络拦截、现代浏览器特性支持,所以测试代码通常更短,跑起来更不容易因为元素加载慢而挂掉。
核心功能一:多浏览器,一套代码跑三遍
Playwright 最大特点是跨浏览器。同一个脚本可以在 Chromium、Firefox、WebKit 里运行,不需要为每个浏览器单独适配。例如,写一个登录测试:
from playwright.sync_api import sync_playwright
for browser_type in ['chromium', 'firefox', 'webkit']:
with sync_playwright() as p:
browser = getattr(p, browser_type).launch()
page = browser.new_page()
page.goto('https://example.com/login')
# 你的断言和操作
browser.close()
预期结果: 控制台依次执行三种浏览器的测试,无需额外配置。
核心功能二:自动等待,告别 sleep
Selenium 时代,写自动化最烦的是等元素出现。要么用 sleep(3),要么写一堆 WebDriverWait。Playwright 内置了自动等待:调用 page.click 时,它会自动等待元素可见、可点击,超时时间可配置。这让你可以删掉大量 sleep。
page.goto('https://example.com')
page.click('#submit') # 自动等待按钮出现
提示: 如果需要等待接口响应,用 page.expect_response(),不要用固定 sleep。
核心功能三:Codegen 录制,10 分钟上手脚本
不想从零写选择器?Playwright 可以录制你的操作并生成代码。在终端运行:
python -m playwright codegen https://example.com
浏览器打开后,你的点击、输入、滚动都会被录下来,生成可运行的脚本。这是快速写原型和熟悉他人项目的好办法。
典型场景: 你不熟悉应用结构,先录制一段流程,再根据生成的代码调整断言。
核心功能四:网络拦截与 Mock
前端联调时后端接口常常没写好。Playwright 可以拦截请求并返回构造的数据,让页面逻辑先跑通。
def handle_route(route):
route.fulfill(status=200, content_type='application/json', body='{"name": "mock"}')
page.route('**/api/user', handle_route)
提示: 这个功能也能做异常场景测试,比如模拟 500、超时、断网。
核心功能五:截图、视频与 PDF
Playwright 可以截全页图、长截图、生成 PDF,甚至录制操作视频。写文档、留存证据都很方便。
page.screenshot(path='homepage.png', full_page=True)
page.pdf(path='page.pdf') # 仅 Chromium 支持
预期结果: 本地生成整页截图和 PDF 文件。
典型使用场景
- 端到端回归测试:每次发版前自动跑注册、下单、支付流程,覆盖多浏览器,不通过就报警。
- 页面视觉回归:用截图功能在不同版本间做 diff,识别样式变化。
- 爬虫与数据采集:控制浏览器登录、点击、滚动,抓取动态渲染数据,比直接请求 HTML 可靠。
和 Selenium、Puppeteer 的区别
Playwright 和 Puppeteer 同源,但 Playwright 支持 Firefox/WebKit,且内置自动等待。与 Selenium 比,Playwright 无需独立驱动安装,API 更现代。这些差异直接影响团队维护成本。
适用人群
需要端到端测试的 Web 开发团队,尤其是要多浏览器覆盖。
写爬虫和自动化脚本的工程师。
想用代码操作浏览器的运维、QA 同学。
不适用人群: 只做静态 HTML 抓取的场景,用 requests 够了;需要测试老版本 IE 的话,Playwright 帮不上忙。
使用建议与 FAQ
语言选择: 优先 Python 或 TypeScript,官方文档资源最多。
安装问题: 运行 playwright install 下载浏览器内核。
选择器写不好? 优先用 get_by_role / get_by_text,别硬抄 CSS 路径。
测试跑得慢: 用分片(shard)并行执行。
Playwright 不是万能测试工具,它需要你维护选择器和测试数据。但相比从 0 搭一套框架,它的入门成本已经低很多。如果团队正被手工回归折磨,建议从一条核心链路开始试。
现在,动手写一段脚本,把第一个端到端用例跑通吧。

浙公网安备 33010602011771号