🎭 Playwright:跨浏览器自动化测试框架

Playwright 是一个用于 Web 测试和自动化的框架,支持 Chromium、Firefox 和 WebKit 浏览器,并提供统一的 API。它旨在实现快速、可靠、无限的跨浏览器自动化。

基础知识点

  • 支持的浏览器:Playwright 支持 Chromium、Firefox 和 WebKit 浏览器,且支持在 Linux、macOS 和 Windows 上运行。
  • 无头模式:所有浏览器在所有平台上都支持无头模式执行。
  • 测试隔离:每个测试都在独立的浏览器上下文中运行,确保测试之间的隔离。

安装和使用

1. 初始化 Playwright Test

最简单的方式是使用 init 命令:

bash 复制代码
npm init playwright@latest

或创建新项目:

bash 复制代码
npm init playwright@latest new-project

2. 手动安装

添加依赖并安装浏览器:

bash 复制代码
npm i -D @playwright/test
npx playwright install

Playwright 的优势

  • 自动等待:Playwright 会等待元素变得可交互后再执行操作,减少了测试的不稳定性。
  • 断言:Playwright 的断言是为动态 Web 而设计的,会自动重试直到满足条件。
  • 跟踪:可以配置测试重试策略,并捕获执行跟踪、视频和截图以消除测试不稳定性。

示例代码

1. 页面截图

javascript 复制代码
import { test } from '@playwright/test';

test('Page Screenshot', async ({ page }) => {
  await page.goto('https://playwright.dev/');
  await page.screenshot({ path: `example.png` });
});

2. 模拟移动设备和地理位置

javascript 复制代码
import { test, devices } from '@playwright/test';

test.use({
  ...devices['iPhone 13 Pro'],
  locale: 'en-US',
  geolocation: { longitude: 12.492507, latitude: 41.889938 },
  permissions: ['geolocation'],
})

test('Mobile and geolocation', async ({ page }) => {
  await page.goto('https://maps.google.com');
  await page.getByText('Your location').click();
  await page.waitForRequest(/.*preview\/pwa/);
  await page.screenshot({ path: 'colosseum-iphone.png' });
});

3. 在浏览器上下文中执行脚本

javascript 复制代码
import { test } from '@playwright/test';

test('Evaluate in browser context', async ({ page }) => {
  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);
});

4. 拦截网络请求

javascript 复制代码
import { test } from '@playwright/test';

test('Intercept network requests', async ({ page }) => {
  // Log and continue all network requests
  await page.route('**', route => {
    console.log(route.request().url());
    route.continue();
  });
  await page.goto('http://todomvc.com');
});

Playwright 的工具

  • 代码生成器:可以通过录制操作生成测试代码。
  • Playwright Inspector:可以检查页面、生成选择器、逐步执行测试并查看执行日志。
  • Trace Viewer:用于捕获测试执行信息,包括视频、截图等,以便于调试测试失败原因。
相关推荐
蓝色的杯子9 分钟前
Python面试30分钟突击掌握-LeetCode1-Array
开发语言·python·面试
TeamDev14 分钟前
JxBrowser 8.18.2 版本发布啦!
java·前端·跨平台·桌面应用·web ui·jxbrowser·浏览器控件
netkiller-BG7NYT14 分钟前
yoloutils - Openclaw Agent Skill
前端·webpack·node.js
北城笑笑19 分钟前
FPGA 51,基于 ZYNQ 7Z010 的 FPGA 高速路由转发加速系统架构设计(Xilinx ZYNQ-MINI 7Z010 CLG400 -1)
前端·fpga开发·系统架构·fpga
不爱吃炸鸡柳20 分钟前
6道经典算法题详解:从排序到链表,覆盖面试高频考点
算法·链表·面试
蜡台23 分钟前
JavaScript async和awiat 使用
开发语言·前端·javascript·async·await
tzy23325 分钟前
AI 对话的流式输出详解——不止于SSE
javascript·ai·llm·sse·readablestream
何陋轩25 分钟前
AI时代,程序员何去何从?别慌,看完这篇你就明白了
后端·面试
keqistarry25 分钟前
java-python快速转语言
面试
挖稀泥的工人27 分钟前
能够插入 DOM 的输入框
前端·javascript·vue.js