Playwright是微软开源的现代化Web 自动化与端到端(E2E)测试框架,可通过编程方式控制浏览器,实现如同“虚拟用户”般的网页操作,包括点击、输入、导航、截图、生成 PDF 等。它支持Chromium(Chrome/Edge)、Firefox、WebKit(Safari 引擎)三大浏览器,并可在Windows、Linux、macOS跨平台运行。
主要应用场景
- 端到端测试:模拟真实用户操作,验证整个业务流程是否正常。
- 数据采集与爬虫:可渲染 JavaScript 动态内容,适合抓取 SPA 页面数据。
- 网页自动化:批量表单填写、自动登录、文件下载等重复性任务。
- 截图与 PDF 生成:生成页面截图或导出 PDF 报告。
- 多标签页与多上下文测试:支持复杂交互与多用户场景。
核心优势
- 跨浏览器与跨语言:支持 JS/TS、Python、Java、.NET,统一 API 调用。
- 自动等待机制:无需手动 sleep,元素可用时自动执行操作,减少超时错误。
- 高性能与稳定性:直接与浏览器通信,执行速度快且可靠。
- 测试隔离:每个测试运行在独立浏览器上下文,避免相互干扰。
- 调试与追踪工具:提供 Codegen、Trace Viewer、Inspector 等可视化调试工具。
它同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以结合主流测试框架使用,并且支持浏览器端的自动化测试脚本录制等功能。更多信息可访问其官网和GitHub仓库。
Java 开发环境搭建
-
创建Maven项目
新建一个Maven项目,等待项目初始化完成(控制台出现“BUILD SUCCESS”)。


-
配置POM依赖
在项目的 pom.xml 文件中添加 Playwright 的 Java 客户端依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>examples</artifactId>
<version>0.1-SNAPSHOT</version>
<name>Playwright Client Examples</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>1.25.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

-
编写并运行第一个脚本
创建测试类 AppTest.java,写入以下代码。首次运行会自动下载所需的浏览器驱动。
package com.howentech;
import com.microsoft.playwright.*;
public class AppTest {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
page.navigate("https://www.baidu.com");
System.out.println(page.title());
}
}
}


驱动下载完成后,脚本会执行并输出百度首页的标题。

第一个程序脚本:打开页面并截图
以下示例演示如何使用 WebKit 引擎打开百度首页并截图保存。
package com.howentech;
import com.microsoft.playwright.*;
import java.nio.file.Paths;
public class WebKitScreenshot {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.webkit().launch();
Page page = browser.newPage();
page.navigate("https://www.baidu.com");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("example.png")));
}
}
}

运行后,截图 example.png 会保存在项目根目录下。

说明:默认情况下,Playwright 以无头模式运行浏览器。若需查看浏览器UI,需在 launch() 方法中传递 new BrowserType.LaunchOptions().setHeadless(false) 参数。
使用 Node.js 环境进行脚本录制
Playwright 提供了强大的脚本录制功能(Codegen),可以自动将用户操作转换为代码。这里使用 Node.js 环境进行演示。
-
环境准备
确保已安装 Node.js,然后在命令行中执行以下命令,初始化项目并安装 Playwright。
# 检查Node.js版本
node -v
# 安装Playwright浏览器驱动
npx playwright install
# 初始化npm项目
npm init -y
# 安装Playwright测试库
npm i -D @playwright/test


-
启动录制
输入以下命令,打开浏览器并开始录制对指定网站(如百度)的操作。
npx playwright codegen https://www.baidu.com

-
选择语言与操作
在打开的 Playwright Inspector 窗口中,选择目标语言(如 Java)。随后在浏览器中的所有操作都将被录制并实时生成代码。录制时,鼠标悬停处会有元素定位提示。


-
复制与回放脚本
操作结束后,点击 Inspector 中的录制停止按钮,复制生成的 Java 代码。

将代码粘贴到你的 Java IDE(如 IntelliJ IDEA)中运行,即可回放刚才录制的所有操作。
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.*;
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
import java.util.*;
public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
.setHeadless(false));
BrowserContext context = browser.newContext();
Page page = context.newPage();
page.navigate("https://www.baidu.com/");
page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("点击一下,了解更多")).click();
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("百度一下")).click();
assertThat(page.locator("#chat-submit-button")).matchesAriaSnapshot("- button \"百度一下\"");
}
}
}

通过以上步骤,我们完成了基于 Java 的 Playwright 环境搭建、第一个脚本的编写与执行,以及利用录制工具快速生成自动化测试脚本的整个过程。
|