Playwright技能从入门到精通:自动化测试实战指南

2次阅读
没有评论

共计 2306 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

背景介绍:为什么选择 Playwright?

在当前的软件开发中,自动化测试已经成为保证产品质量的重要手段。传统的自动化测试工具如 Selenium 虽然功能强大,但存在一些局限性,比如跨浏览器兼容性问题、执行速度慢等。Playwright 作为微软开源的现代化自动化测试工具,具有以下优势:

Playwright 技能从入门到精通:自动化测试实战指南

  • 支持 Chromium、WebKit 和 Firefox 三大浏览器引擎
  • 提供自动等待机制,减少测试代码中的显式等待
  • 跨平台支持,可以在 Windows、macOS 和 Linux 上运行
  • 内置网络拦截和模拟功能
  • 执行速度快,性能优异

环境搭建

  1. 确保已安装 Node.js(建议使用 LTS 版本)
  2. 创建一个新的项目目录并初始化 npm
mkdir playwright-demo && cd playwright-demo
npm init -y
  1. 安装 Playwright 及相关依赖
npm install playwright @playwright/test
  1. 安装浏览器(这可能会花费一些时间)
npx playwright install

核心 API 详解

Playwright 的核心概念围绕三个主要对象:

  1. Browser:代表一个浏览器实例
  2. BrowserContext:相当于独立的浏览器会话(可以理解为无痕模式)
  3. Page:代表一个标签页

下面是这些对象的基本使用方法:

import {chromium} from 'playwright';

// 启动浏览器
const browser = await chromium.launch({headless: false});

// 创建上下文
const context = await browser.newContext();

// 创建页面
const page = await context.newPage();

// 导航到网址
await page.goto('https://example.com');

// 执行操作...

// 关闭浏览器
await browser.close();

实战示例:用户登录测试

下面是一个完整的用户登录测试案例,包含了页面操作、断言和清理:

import {test, expect} from '@playwright/test';

// 使用 Playwright 的测试运行器编写测试用例
test('用户登录测试', async ({ page}) => {
  // 导航到登录页面
  await page.goto('https://example.com/login');

  // 填写用户名和密码
  await page.fill('#username', 'testuser');
  await page.fill('#password', 'password123');

  // 点击登录按钮
  await page.click('button[type="submit"]');

  // 等待导航完成
  await page.waitForNavigation();

  // 验证登录成功
  await expect(page).toHaveURL('https://example.com/dashboard');
  await expect(page.locator('.welcome-message')).toContainText('Welcome, testuser!');
});

高级技巧

跨浏览器测试

Playwright 可以轻松实现跨浏览器测试。只需在配置文件中指定不同的浏览器即可:

// playwright.config.ts
import {PlaywrightTestConfig, devices} from '@playwright/test';

const config: PlaywrightTestConfig = {
  projects: [
    {
      name: 'chromium',
      use: {...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: {...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: {...devices['Desktop Safari'] },
    },
  ],
};

export default config;

性能优化

  1. 使用 context 复用浏览器会话,减少启动开销
  2. 并行执行测试用例
  3. 使用 page.waitForSelector() 而不是sleep
  4. 禁用不必要的资源加载
const context = await browser.newContext({
  // 禁用图片加载以加速测试
  bypassCSP: true,
  ignoreHTTPSErrors: true,
  viewport: {width: 1280, height: 720},
  javaScriptEnabled: true,
});

避坑指南

常见问题及解决方案

  1. 元素定位失败
  2. 原因:元素还未加载完成或定位器不正确
  3. 解决:使用 page.waitForSelector() 等待元素出现

  4. 测试不稳定

  5. 原因:网络延迟或资源加载问题
  6. 解决:增加适当的等待或使用 retries 配置

  7. 跨域问题

  8. 原因:浏览器安全限制
  9. 解决:创建测试时使用 --disable-web-security 参数

  10. CI 环境下测试失败

  11. 原因:缺少必要的依赖
  12. 解决:确保 CI 环境中安装了所有浏览器依赖

思考与扩展

现在你已经了解了 Playwright 的基本使用方法,可以尝试以下扩展练习:

  1. 为你的项目编写一个端到端测试流程
  2. 尝试实现一个截图测试功能,比较页面截图与基线图片
  3. 研究如何集成到你的 CI/CD 流程中

Playwright 功能强大且易于使用,希望这篇文章能帮助你快速上手自动化测试。在实际项目中多加练习,你会逐渐掌握更多高级技巧。如果在使用过程中遇到问题,Playwright 的官方文档和社区都是很好的资源。

正文完
 0
评论(没有评论)