Playwright for Python:微软出品的跨浏览器自动化测试工具
Playwright for Python:微软出品的跨浏览器自动化测试工具
做 Web 自动化测试的人应该都听过 Selenium,但微软前几年推出的 Playwright 正在快速抢走它的市场份额。playwright-python 这个库在 GitHub 上已经拿到 14,693 个 Star,势头很猛。
Playwright 的核心卖点很直接:一套 API,同时搞定 Chromium、Firefox、WebKit 三大浏览器引擎。不需要装不同驱动,不需要配各种环境,pip install 完就能跑。

比 Selenium 强在哪
Selenium 的问题用过的人都懂:驱动版本要对齐、浏览器一更新就挂、执行速度慢、等待元素加载要手写一堆逻辑。Playwright 把这些痛点解决得很干净。
自动等待。 点击按钮前,Playwright 自动等元素可见、可操作。不用再写显式等待或 sleep 硬控。
浏览器自带。 安装时直接把 Chromium、Firefox、WebKit 都下载好,不依赖系统浏览器。CI 环境里不用折腾装 Chrome,省掉一堆 Dockerfile 配置。
网络拦截。 内置请求拦截能力,可以 mock 接口、拦截图片资源、监控网络请求。做测试时不用再引入额外的代理工具。
多上下文隔离。 一个浏览器实例开多个独立上下文,每个有自己的 cookie 和 localStorage。模拟多用户登录场景时不用开多个浏览器窗口。
同步和异步都支持
Playwright Python 提供 sync_api 和 async_api 两套接口。同步版本写起来简单直接,适合大多数测试场景:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.new_page()
page.goto('http://playwright.dev')
page.screenshot(path=f'example-{browser_type.name}.png')
browser.close()
异步版本配合 pytest-asyncio 做高性能并发测试也很顺手,一个事件循环里跑几十个浏览器实例不成问题。

平台和生态
Windows、macOS、Linux 全部原生支持。Chromium、Firefox、WebKit 三个引擎在三个平台上的兼容性表全是绿勾。Docker 里也能跑,官方提供了预装好浏览器的镜像。
Playwright 不只是 Python 的特权。Node.js、.NET、Java 都有同等质量的官方支持,API 设计各语言保持统一。学会一个版本就能快速上手其他版本。
适合谁用
做 Web 自动化测试的团队可以认真考虑从 Selenium 迁移过来。开发体验的提升是实打实的,不只是启动快一点或者 API 好看一点。
写爬虫的人同样会喜欢它。内置的请求拦截和自动等待能少写大量样板代码,遇到反爬严格的目标站,多浏览器引擎切换也多了条路。
有一点需要注意:安装时会下载三个浏览器二进制文件,体积大概 400MB。如果网络环境不好,第一次安装会比较慢。日常使用中这是可控的。
微软在这个项目上的投入相当持续,更新频率高,文档也写得清楚。14,693 个 Star 不会是最后一个数字。

浙公网安备 33010602011771号