Playwright 入门指南:从零开始轻松搞定 Web 自动化
Playwright 是一个强大的现代开源自动化库,专门为端到端测试而设计。它由微软的团队开发并维护,支持使用单一 API 来操控多种浏览器。
Playwright 之所以迅速流行,是因为它解决了许多传统自动化工具(如 Selenium)的痛点。
跨浏览器支持
支持所有现代浏览器引擎:Chromium(Chrome, Edge)、Firefox 和 WebKit(Safari)。
这意味着你可以在 Windows 上测试 Safari,确保了跨平台的一致性。
跨平台、多语言
平台: 支持 Windows, macOS, Linux(包括在 Docker 容器中)。
语言: 提供对 TypeScript/JavaScript、Python、.NET (C#) 和 Java 的一流支持,API 在不同语言间保持一致。
强大的自动化能力
自动等待: Playwright 在执行操作前会自动等待元素可用的状态(如可点击、可见),无需手动添加
sleep
或复杂等待,大大提高了测试的稳定性和编写效率。网络拦截: 可以轻松地模拟和修改网络请求,例如拦截 API 调用、模拟慢速网络或离线状态。
多标签页、多上下文: 能够处理多个浏览器标签页、甚至无痕浏览器上下文,这对于测试多用户场景或单点登录非常有用。
文件下载与上传: 原生支持文件上传和下载操作的自动化。
Shadow DOM 支持: 对 Web Components 中的 Shadow DOM 有很好的支持,可以直接定位其中的元素。
速度快、可靠性高
无头模式: 默认在无头模式下运行,速度极快。
浏览器上下文: 通过创建独立的浏览器上下文,可以实现并行测试,且彼此隔离,互不干扰。
追踪与调试: 内置强大的工具,可以记录测试执行过程的视频、截图和操作日志,方便调试失败的测试。
现代化的测试框架集成
可以轻松与流行的测试运行器集成,如 Jest、Mocha、Playwright Test(其自带的、功能丰富的测试运行器)、Pytest 等。
相关网址:
playwright中文文档 Nodejs.cn(https://playwright.nodejs.cn/python/docs/library)
安装
pip install playwright
使用如下命令来安装playwright所需的引擎
playwright install
QuickStart
在我们的第一个脚本中,我们将导航到 https://playwright.nodejs.cn/
并在 WebKit 中截取屏幕截图。你可以使用 Python 脚本运行 import
Playwright,并启动 3 个浏览器(chromium
、firefox
和 webkit
)中的任意一个。
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("http://www.baidu.com")
page.screenshot(path="./example.png")
browser.close()
默认情况下,Playwright 以无头模式运行浏览器。要查看浏览器 UI,请将 headless 选项设置为 False
。你还可以使用 slow_mo 来减慢执行速度。在调试工具 section 中了解更多信息。
chromium.launch(headless=False, slow_mo=50)
Playwright 支持两种 API 变体:同步和异步。如果你的现代项目使用 asyncio,则应该使用异步 API:
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("http://www.baidu.com")
print(await page.title())
await browser.close()
asyncio.run(main())