Playwright 实战全解析:使用方法、典型场景及与 Selenium 的全面对比

文章目录

    • [一、Playwright 是什么?能解决什么问题](#一、Playwright 是什么?能解决什么问题)
    • [二、Playwright 基本使用方法(Python)](#二、Playwright 基本使用方法(Python))
      • [1. 安装与初始化](#1. 安装与初始化)
      • [2. 最小可运行示例](#2. 最小可运行示例)
      • [3. 核心概念说明](#3. 核心概念说明)
      • [4. 元素定位与操作](#4. 元素定位与操作)
      • [5. 等待机制(稳定性的关键)](#5. 等待机制(稳定性的关键))
      • [6. 文件下载 / 上传](#6. 文件下载 / 上传)
      • [7. 登录态复用(生产级必备)](#7. 登录态复用(生产级必备))
      • [8. 网络拦截与接口感知(Playwright 的核心优势)](#8. 网络拦截与接口感知(Playwright 的核心优势))
    • [三、Playwright 的常见使用场景总结](#三、Playwright 的常见使用场景总结)
      • [场景 1:后台系统自动操作](#场景 1:后台系统自动操作)
      • [场景 2:SPA 页面数据采集](#场景 2:SPA 页面数据采集)
      • [场景 3:系统巡检与告警](#场景 3:系统巡检与告警)
      • [场景 4:自动化测试(UI / E2E)](#场景 4:自动化测试(UI / E2E))
    • [四、Playwright 与 Selenium 的使用场景对比](#四、Playwright 与 Selenium 的使用场景对比)
      • [1. 相同点](#1. 相同点)
      • [2. 核心差异对比](#2. 核心差异对比)
      • [3. 使用场景选择建议](#3. 使用场景选择建议)
        • [更适合 Playwright 的场景](#更适合 Playwright 的场景)
        • [更适合 Selenium 的场景](#更适合 Selenium 的场景)
    • 五、优缺点总结
      • [Playwright 优点](#Playwright 优点)
      • [Playwright 不足](#Playwright 不足)
    • 六、结语

随着前端技术的发展,越来越多的系统变成了 SPA(前后端分离)应用,传统浏览器自动化在稳定性、等待机制、接口感知能力 等方面逐渐暴露短板。

Playwright 作为新一代浏览器自动化框架,正在被越来越多团队用于 自动化测试、数据采集、运维脚本、系统巡检 等场景。

本文将从实战角度出发,重点介绍:

  1. Playwright 的使用方法与常见使用场景
  2. Playwright 与 Selenium 的使用场景对比及优缺点分析

一、Playwright 是什么?能解决什么问题

Playwright 是由 Microsoft 推出的现代化浏览器自动化框架,支持使用代码控制真实浏览器完成用户操作。

它的核心定位不是"替代 Selenium",而是:

  • 现代 Web 场景(SPA、复杂交互、接口驱动页面) 下,提供更稳定、更易用的自动化能力

典型适用场景

  • UI / E2E 自动化测试
  • 需要登录、JS 渲染的页面采集
  • 后台系统自动化运维(导报表、批量操作)
  • 页面可用性巡检(健康检查)
  • 自动生成截图 / PDF / 留痕材料

二、Playwright 基本使用方法(Python)

1. 安装与初始化

bash 复制代码
pip install playwright
python -m playwright install

playwright install 用于下载 Playwright 自带的浏览器运行时,这是很多新手最容易忽略的一步。


2. 最小可运行示例

python 复制代码
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context()
    page = context.new_page()

    page.goto("https://example.com", wait_until="domcontentloaded")
    page.screenshot(path="example.png", full_page=True)

    browser.close()

3. 核心概念说明

概念 说明
Browser 浏览器实例
Context 浏览器上下文(类似独立无痕窗口,Cookie 隔离)
Page 标签页

推荐做法

始终使用 Browser → Context → Page 结构,便于多账号隔离和工程扩展。


4. 元素定位与操作

Playwright 主推 Locator 机制,自带自动等待能力。

python 复制代码
page.get_by_role("button", name="登录").click()
page.get_by_placeholder("请输入账号").fill("admin")

常用定位方式优先级建议:

  1. role / label / placeholder(最稳)
  2. text
  3. css
  4. xpath(兜底)

5. 等待机制(稳定性的关键)

页面加载等待
python 复制代码
page.goto(url, wait_until="networkidle")
等元素出现
python 复制代码
page.locator(".user-info").wait_for(state="visible")
等接口返回(非常重要)
python 复制代码
with page.expect_response(lambda r: "api/list" in r.url and r.status == 200):
    page.get_by_role("button", name="查询").click()

Playwright 的稳定性很大一部分来自于"等条件,而不是 sleep"。


6. 文件下载 / 上传

python 复制代码
with page.expect_download() as d:
    page.get_by_role("button", name="导出").click()
d.value.save_as("result.xlsx")

7. 登录态复用(生产级必备)

python 复制代码
# 首次登录后保存
context.storage_state(path="state.json")

# 后续直接复用
context = browser.new_context(storage_state="state.json")

非常适合:

  • 定时任务
  • 运维脚本
  • 报表系统

8. 网络拦截与接口感知(Playwright 的核心优势)

python 复制代码
def handle(route, request):
    if "api/user/info" in request.url:
        route.fulfill(
            status=200,
            content_type="application/json",
            body='{"name": "mock_user"}'
        )
    else:
        route.continue_()

page.route("**/*", handle)

可用于:

  • 自动化测试 mock 数据
  • 加速页面加载
  • 精准获取接口 JSON(替代 DOM 解析)

三、Playwright 的常见使用场景总结

场景 1:后台系统自动操作

  • 登录 → 查询 → 导出 → 保存
  • 极适合报表、运营系统、BI 平台

场景 2:SPA 页面数据采集

  • 直接监听接口返回 JSON
  • 不再依赖脆弱的 DOM 结构

场景 3:系统巡检与告警

  • 页面打不开 / 元素缺失即告警
  • 截图 + trace 留痕

场景 4:自动化测试(UI / E2E)

  • 自动等待 + 网络拦截
  • 更适合现代前端架构

四、Playwright 与 Selenium 的使用场景对比

1. 相同点

  • 都能控制真实浏览器
  • 都支持多语言
  • 都能用于自动化测试与脚本任务
  • 都支持无头/有头模式

2. 核心差异对比

维度 Playwright Selenium
浏览器依赖 自带并管理浏览器 依赖系统浏览器 + driver
等待机制 自动等待(默认) 需手写等待
稳定性 依赖工程经验
网络拦截 原生支持 原生较弱
SPA 适配 非常友好 容易不稳定
多账号隔离 Context 原生支持 需多开浏览器
调试能力 Trace / 录像 相对较弱
生态成熟度 新但完善 非常成熟

3. 使用场景选择建议

更适合 Playwright 的场景
  • 前后端分离 / SPA 项目
  • 多账号并发任务
  • 自动化采集接口数据
  • 追求稳定、低维护成本
  • CI/CD 自动化测试
更适合 Selenium 的场景
  • 公司已有大量 Selenium 存量
  • 传统 Web 系统
  • 团队对 Selenium 非常熟悉
  • 依赖某些特殊浏览器生态

五、优缺点总结

Playwright 优点

  • 自动等待,脚本更稳
  • 网络拦截能力强
  • 多 Context 设计非常适合生产任务
  • 工程化能力强(trace、录像、mock)

Playwright 不足

  • 相对较新,中文资料少于 Selenium
  • WebKit ≠ 完全等同真实 Safari
  • 对老系统支持不如 Selenium 广泛

六、结语

Selenium 是"经典且稳健的老将",Playwright 是"为现代 Web 而生的新一代工具"。

如果你的系统是:

  • SPA / Vue / React / 前后端分离
  • 需要接口级感知
  • 需要高稳定性、低维护成本

👉 优先选择 Playwright

如果你所在团队:

  • 已有成熟 Selenium 体系
  • 或对 Selenium 有强工程积累

👉 继续使用 Selenium 也是合理选择

相关推荐
卓码软件测评3 小时前
软件首版次认定测试机构:【Apifox与UMI框架结合:实现OpenAPI规范与Mock服务的自动化流水线】
测试工具·ci/cd·性能优化·单元测试·测试用例
小白学大数据4 小时前
如何用 Selenium 解决新闻数据批量采集难题
selenium·测试工具
少云清4 小时前
【软件测试】5_性能测试 _常用性能测试工具对比
测试工具
霍格沃兹测试开发学社测试人社区4 小时前
Playwright数据驱动测试:从Excel与JSON获取测试数据指南
excel·playwright
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 39--生成 Allure测试报告
python·学习·测试工具·pytest
_OP_CHEN1 天前
【测试理论与实践】(九)Selenium 自动化测试常用函数全攻略:从元素定位到文件上传,覆盖 99% 实战场景
自动化测试·python·测试开发·selenium·测试工具·测试工程师·自动化工具
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
废弃的小码农2 天前
功能测试--Day02--Web项目测试
功能测试·测试工具
悟能不能悟2 天前
怎么使用postman批量的给api做测试
测试工具·lua·postman