跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScriptNode.jsAI大前端

Playwright 现代 Web 自动化测试简明教程

综述由AI生成Playwright 作为现代 Web 自动化测试框架的优势,包括跨引擎支持、智能等待及多语言特性。内容涵盖安装配置、基础 API 使用、常见测试场景如元素定位、网络请求等待、弹窗处理及移动端模拟。此外还详细说明了 CI 集成方法以及结合 MCP 协议实现 AI 辅助测试的新兴用法,适合希望提升测试效率的开发者参考。

橘子海发布于 2026/4/6更新于 2026/5/2939 浏览
Playwright 现代 Web 自动化测试简明教程

告别 Selenium:Playwright 现代 Web 自动化测试简明教程

前言:为什么选择 Playwright?

在 Web 自动化测试领域,Selenium 曾长期占据主流,但面对现代前端框架(React/Vue/Next.js)、复杂 SPA 应用和多端适配需求,其局限性逐渐凸显。Microsoft 推出的 Playwright 框架,凭借跨引擎、跨平台、智能化的特性,成为新一代自动化测试的优选方案。

相比于传统的 Selenium 或 Cypress,Playwright 具有以下优势:

  • 极致性能:基于浏览器上下文(Browser Context)隔离测试环境,启动速度比 Selenium 快 30%+,无冗余进程开销;
  • 智能等待:内置自适应等待机制,自动等待元素可交互,彻底告别 sleep() 硬编码;
  • 全场景覆盖:支持 Chromium/Firefox/WebKit 三大引擎,Windows/Linux/macOS 全平台,JavaScript/TypeScript/Python/Java/.NET 多语言;
  • 强大工具链:Codegen(代码自动生成)、Trace Viewer(测试追踪分析)、UI Mode(交互式调试)一站式提效;
  • 多端适配:原生支持移动端浏览器模拟,实验性支持安卓真机测试,覆盖 PC + 移动全场景。

安装

在已有 Node.js 环境的项目中,执行以下命令一键初始化 Playwright:

npm init playwright@latest 

执行后,脚本会引导你完成以下配置:

  1. 选择使用 TypeScript 还是 JavaScript。
  2. 指定测试文件存放目录(默认 tests)。
  3. 是否添加 GitHub Actions 工作流。
  4. 是否安装 Playwright 浏览器(建议选择是,否则后续需要手动运行 npx playwright install)。

基础使用

编写第一个测试

Playwright 的 API 非常直观。在 tests/example.spec.ts 中:

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

test('has title', async ({ page }) => {
  await page.goto('https://playwright.dev/');
  // 期待标题包含 "Playwright"
  await expect(page).toHaveTitle(/Playwright/);
});

test('get started link', async ({ page }) => {
  await page.goto('https://playwright.dev/');
  
   page.(, { :  }).();
  
   (page).();
});
// 点击 "Get started" 链接
await
getByRole
'link'
name
'Get started'
click
// 期待 URL 包含 intro
await
expect
toHaveURL
/.*intro/

常见测试场景

1. 元素定位与交互

Playwright 推荐使用 page.getByRole 或 page.getByText 等面向用户的定位方式,这能使测试更具鲁棒性。

// 填写表单
await page.getByLabel('用户名').fill('admin');
await page.getByLabel('密码').fill('123456');
// 点击按钮
await page.getByRole('button', { name: '登录' }).click();
2. 等待网络请求

在现代单页应用(SPA)中,等待特定的接口返回是非常常见的需求。

// 等待接口返回
const [response] = await Promise.all([
  page.waitForResponse(resp => resp.url().includes('/api/login') && resp.status() === 200),
  page.getByRole('button', { name: '登录' }).click(),
]);
3. 处理弹窗与 Iframe

Playwright 能够轻松处理 JavaScript 警告框(Dialog)和嵌套的 Iframe。

// 处理 Dialog
page.on('dialog', dialog => dialog.accept());
await page.getByRole('button', { name: '删除' }).click();
// 进入 Iframe 交互
const frame = page.frameLocator('#my-iframe');
await frame.getByText('确认提交').click();
4. 键盘输入与快捷键

Playwright 提供了非常精细的键盘模拟能力,不仅可以输入文本,还能模拟单个按键及组合键。

// 聚焦并输入文本
await page.getByLabel('搜索').focus();
await page.keyboard.type('Playwright', { delay: 100 });
// 模拟真实打字速度
// 按下回车键
await page.keyboard.press('Enter');
// 组合键:全选并删除 (Windows/Linux 用 Control, macOS 用 Meta)
await page.keyboard.press('Control+A');
await page.keyboard.press('Backspace');
5. 移动端与权限模拟

Playwright 生态内置了大量的设备预设,可以轻松模拟特定的手机或平板环境,并支持精细控制地理位置、语言和系统权限。

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

test('iPhone 14 移动端模拟测试', async ({ browser }) => {
  // 使用内置设备预设
  const context = await browser.newContext({
    ...devices['iPhone 14'],
    locale: 'zh-CN',
    timezoneId: 'Asia/Shanghai',
    geolocation: { longitude: 116.39, latitude: 39.9 },
    permissions: ['geolocation'] // 授予地理位置权限
  });
  const page = await context.newPage();
  await page.goto('https://maps.google.com');
  // 验证页面是否根据模拟坐标显示
  await context.close();
});

常用命令

  • 运行所有测试:npx playwright test
  • 运行指定浏览器:npx playwright test --project=chromium
  • 有界面模式(Headed):npx playwright test --headed
  • UI 模式(推荐交互式调试):npx playwright test --ui
  • 查看测试报告:npx playwright show-report

安卓平台测试 (实验性)

Playwright 提供了一项非常有趣的功能:直接对安卓设备上的 Chrome 或 WebView 进行自动化。

准备工作
  1. 确保已安装 ADB 并能够识别设备(adb devices)。
  2. 在安卓设备上开启'开发者模式'和'USB 调试'。
  3. 确保 Chrome (87+) 或对应的 WebView 已安装。
示例代码
const { _android: android } = require('playwright');

(async () => {
  // 连接到安卓设备
  const [device] = await android.devices();
  console.log(`Model: ${device.model()}`);
  // 启动 Chrome
  await device.shell('am force-stop com.android.chrome');
  const context = await device.launchBrowser();
  const page = await context.newPage();
  await page.goto('https://github.com/microsoft/playwright');
  console.log(await page.title());
  await device.screenshot({ path: 'android-screenshot.png' });
  await context.close();
  await device.close();
})();

注:此功能目前仍处于实验阶段。

CI 集成

Playwright 与 GitHub Actions 集成非常简单。如果你在安装时选择了添加 GitHub Actions 工作流,它会为你生成 .github/workflows/playwright.yml:

name: Playwright Tests
on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]
jobs:
  test:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: lts/*
      - name: Install dependencies
        run: npm ci
      - name: Install Playwright Browsers
        run: npx playwright install --with-deps
      - name: Run Playwright tests
        run: npx playwright test
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: playwright-report
          path: playwright-report/
          retention-days: 30

MCP 使用

在现代开发流程中,我们可以利用 Model Context Protocol (MCP) 将 Playwright 的自动化能力暴露给 AI Agent。

通过配置 Playwright MCP 服务,AI 可以:

  1. 自动化交互:根据自然语言描述,AI 可以在浏览器中点击、输入、导航。
  2. 错误诊断:当测试失败时,AI 可以读取追踪文件(Trace)并结合源码给出修复方案。
  3. 动态录制:让 AI 生成复杂的 Playwright 测试脚本。

要在 GitHub Copilot 或其他支持 MCP 的环境中使用,你可以:

  1. 安装插件:在 VS Code 的扩展市场中搜索 @mcp playwright 并下载安装相应的 MCP 服务器插件。
  2. 配置连接:在 GitHub Copilot 的设置中添加该 MCP 服务,授予其浏览器的控制权限。

一旦配置完成,你就可以直接在 Chat 窗口中命令 AI:'帮我打开 xxx 网站并截个图',或者'在这个页面执行一个登录流程'。

总结

Playwright 凭借高性能、智能化、全场景覆盖的特性,完美适配现代 Web 应用的自动化测试需求。从基础的页面交互到复杂的移动端 / 真机测试,从本地调试到 CI 集成,再到 AI 协同提效,Playwright 构建了完整的自动化测试生态。相比 Selenium,它更简洁、更稳定、更贴合现代开发流程,是值得投入学习的下一代自动化测试框架。

目录

  1. 告别 Selenium:Playwright 现代 Web 自动化测试简明教程
  2. 前言:为什么选择 Playwright?
  3. 安装
  4. 基础使用
  5. 编写第一个测试
  6. 常见测试场景
  7. 1. 元素定位与交互
  8. 2. 等待网络请求
  9. 3. 处理弹窗与 Iframe
  10. 4. 键盘输入与快捷键
  11. 5. 移动端与权限模拟
  12. 常用命令
  13. 安卓平台测试 (实验性)
  14. 准备工作
  15. 示例代码
  16. CI 集成
  17. MCP 使用
  18. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Whisper OpenAI 开源语音识别工具安装与使用指南
  • 数据结构——图:遍历、最小生成树与最短路径
  • OpenClaw 开源 AI 智能体框架:技术架构、部署与安全分析
  • Java 版本选型:JDK 特性对比与实战建议
  • 小型语言模型(SLM)技术最新全面综述
  • Spring AI 支持 Agent Skills 模块化能力指南
  • Xilinx FPGA 外部 SPI Flash 启动时钟频率配置
  • AI 辅助编程全面指南:技巧、策略与最佳实践
  • Windows 环境本地大模型工具链安装教程:Ollama + llama.cpp + LLaMA Factory
  • 大模型 Token 机制与上下文窗口管理实战
  • AR 系列摄像头发展历程与参数规格分析
  • 大疆无人机开发:MSDK/PSDK/上云 API 实战指南
  • 30 分钟使用 Llama Factory 微调中文大模型
  • Python 构建 AI 助手:文档总结、代码生成与智能检索实战
  • Spark DataFusion Comet 向量化:Rust Native ScanExec 与 Selection Vectors
  • 适合 Python 初学者的 11 个优质学习资源网站推荐
  • 华为设备 SSH 远程登录配置实战
  • Spring AI 核心亮点拆解与实战指南
  • 自然语言处理在法律领域的应用与实战
  • OpenClaw 本地 AI 助手安装与配置实战

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online