一个与 Puppeteer 类似的端到端(e2e)测试工具。
Playwright 为当代 Web 应用程序提供可靠的端到端测试。
支持所有浏览器
在 Chromium、Firefox 和 WebKit 上进行测试。Playwright 拥有适用于所有当代浏览器的完整 API,包括 Google Chrome 和 Microsoft Edge(带有Chromium)、Apple Safari(带有WebKit)和 Mozilla Firefox。
跨平台 WebKit 测试。借助 Playwright,使用适用于 Windows、Linux 和 macOS 的 WebKit 构建测试您的应用在 Apple Safari 中的行为。在本地和 CI 上进行测试。
测试手机。使用设备模拟在移动 Web 浏览器中测试您的响应式 Web 应用程序。
无头和有头。Playwright 支持所有浏览器和所有平台的无头(无浏览器 UI)和有头(带浏览器 UI)模式。Headed 非常适合调试,而 Headless 速度更快,适合 CI/云执行。
快速可靠的执行
自动等待 API。Playwright 动会自动等待元素准备就绪。这提高了可靠性并简化了测试编写。
无超时自动化。Playwright 接收浏览器信号,如网络请求、页面导航和页面加载事件,以消除导致不稳定的睡眠超时的需要。
使用浏览器上下文快速隔离。将单个浏览器实例重用于具有浏览器上下文的多个隔离执行环境。
弹性元素选择器。Playwright 可以依靠面向用户的字符串(如文本内容和可访问性标签)来选择元素。这些字符串比紧密耦合到 DOM 结构的选择器更有弹性。
强大的自动化功能
多个域、页面和框架。Playwright 是一个进程外自动化驱动,不受页内 JavaScript 执行范围的限制,可以自动化多页面场景。
强大的网络控制。Playwright 引入了上下文范围的网络拦截来存根和模拟网络请求。
当代浏览器功能特性。Playwright 支持 web components、地理定位、权限、 web workers 和其他当代 web APIs.
覆盖所有场景的能力。支持文件下载和上传、进程外 iframe、本机输入事件,甚至暗黑模式。
安装
Playwright 有自己的测试运行器用于端到端测试,我们称之为 Playwright 测试。
npm i -D @playwright/test
# install supported browsers
npx playwright install
您可以选择仅安装选定的浏览器
第一次测试
创建 tests/foo.spec.js(或 tests/foo.spec.ts 用于 TypeScript)来定义您的测试。
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('https://playwright.dev/');
const title = page.locator('.navbar__inner .navbar__title');
await expect(title).toHaveText('Playwright');
});
现在运行您的测试,假设测试文件在tests目录中。
npx playwright test
Playwright Test 刚刚使用 Chromium 浏览器以无头方式运行了一个测试。让我们告诉它使用有头浏览器:
npx playwright test --headed
其他浏览器呢?让我们使用 Firefox 运行相同的测试:
npx playwright test --browser=firefox
最后,在所有浏览器上测试:
npx playwright test --browser=all