Playwright

Playwright 是一个用于 Web 测试和自动化的框架。它允许用一个单一的 API 来测试Chromium、Firefox 和 WebKit。「Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.」

Github星跟踪图

🎭 Playwright

npm version Chromium version Firefox version WebKit version

Documentation | API reference

Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API. Playwright is built to enable cross-browser web automation that is ever-green, capable, reliable and fast.

Linux macOS Windows
Chromium 98.0.4744.0 :white_check_mark: :white_check_mark: :white_check_mark:
WebKit 15.4 :white_check_mark: :white_check_mark: :white_check_mark:
Firefox 94.0.1 :white_check_mark: :white_check_mark: :white_check_mark:

Headless execution is supported for all the browsers on all platforms. Check out system requirements for details.

Usage

npm i -D playwright

This installs Playwright and browser binaries for Chromium, Firefox and WebKit. Once installed, you can require Playwright in a Node.js script and automate web browser interactions.

Capabilities

Playwright is built to automate the broad and growing set of web browser capabilities used by Single Page Apps and Progressive Web Apps.

  • Scenarios that span multiple page, domains and iframes
  • Auto-wait for elements to be ready before executing actions (like click, fill)
  • Intercept network activity for stubbing and mocking network requests
  • Emulate mobile devices, geolocation, permissions
  • Support for web components via shadow-piercing selectors
  • Native input events for mouse and keyboard
  • Upload and download files

Examples

Page screenshot

This code snippet navigates to whatsmyuseragent.org in Chromium, Firefox and WebKit, and saves 3 screenshots.

const playwright = require('playwright');

(async () => {
  for (const browserType of [playwright.chromium, playwright.firefox, playwright.webkit]) {
    const browser = await browserType.launch();
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto('http://whatsmyuseragent.org/');
    await page.screenshot({ path: `example-${browserType.name()}.png` });
    await browser.close();
  }
})();

Mobile and geolocation

This snippet emulates Mobile Safari on a device at a given geolocation, navigates to maps.google.com, performs action and takes a screenshot.

const { webkit, devices } = require('playwright');
const iPhone11 = devices['iPhone 11 Pro'];

(async () => {
  const browser = await webkit.launch();
  const context = await browser.newContext({
    ...iPhone11,
    locale: 'en-US',
    geolocation: { longitude: 12.492507, latitude: 41.889938 },
    permissions: ['geolocation']
  });
  const page = await context.newPage();
  await page.goto('https://maps.google.com');
  await page.click('text="Your location"');
  await page.waitForRequest(/.*preview\/pwa/);
  await page.screenshot({ path: 'colosseum-iphone.png' });
  await browser.close();
})();

Evaluate in browser context

This code snippet navigates to example.com in Firefox, and executes a script in the page context.

const { firefox } = require('playwright');

(async () => {
  const browser = await firefox.launch();
  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://www.example.com/');
  const dimensions = await page.evaluate(() => {
    return {
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight,
      deviceScaleFactor: window.devicePixelRatio
    }
  });
  console.log(dimensions);

  await browser.close();
})();

Intercept network requests

This code snippet sets up request routing for a WebKit page to log all network requests.

const { webkit } = require('playwright');

(async () => {
  const browser = await webkit.launch();
  const context = await browser.newContext();
  const page = await context.newPage();

  // Log and continue all network requests
  await page.route('**', route => {
    console.log(route.request().url());
    route.continue();
  });

  await page.goto('http://todomvc.com');
  await browser.close();
})();

Resources

主要指标

概览
名称与所有者microsoft/playwright
主编程语言TypeScript
编程语言JavaScript (语言数: 17)
平台Linux, Mac, Windows
许可证Apache License 2.0
所有者活动
创建于2019-11-15 18:32:42
推送于2025-06-07 10:03:13
最后一次提交
发布数144
最新版本名称v1.52.0 (发布于 )
第一版名称v0.10.0 (发布于 )
用户参与
星数73.3k
关注者数512
派生数4.2k
提交数14.7k
已启用问题?
问题数15928
打开的问题数797
拉请求数14656
打开的拉请求数21
关闭的拉请求数2097
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?