找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2006

积分

0

好友

277

主题
发表于 2025-12-25 19:35:54 | 查看: 37| 回复: 0

Playwright是微软开源的现代化Web 自动化与端到端(E2E)测试框架,可通过编程方式控制浏览器,实现如同“虚拟用户”般的网页操作,包括点击、输入、导航、截图、生成 PDF 等。它支持Chromium(Chrome/Edge)FirefoxWebKit(Safari 引擎)三大浏览器,并可在Windows、Linux、macOS跨平台运行。

主要应用场景

  • 端到端测试:模拟真实用户操作,验证整个业务流程是否正常。
  • 数据采集与爬虫:可渲染 JavaScript 动态内容,适合抓取 SPA 页面数据。
  • 网页自动化:批量表单填写、自动登录、文件下载等重复性任务。
  • 截图与 PDF 生成:生成页面截图或导出 PDF 报告。
  • 多标签页与多上下文测试:支持复杂交互与多用户场景。

核心优势

  • 跨浏览器与跨语言:支持 JS/TS、Python、Java、.NET,统一 API 调用。
  • 自动等待机制:无需手动 sleep,元素可用时自动执行操作,减少超时错误。
  • 高性能与稳定性:直接与浏览器通信,执行速度快且可靠。
  • 测试隔离:每个测试运行在独立浏览器上下文,避免相互干扰。
  • 调试与追踪工具:提供 Codegen、Trace Viewer、Inspector 等可视化调试工具。

它同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以结合主流测试框架使用,并且支持浏览器端的自动化测试脚本录制等功能。更多信息可访问其官网GitHub仓库

Java 开发环境搭建

  1. 创建Maven项目
    新建一个Maven项目,等待项目初始化完成(控制台出现“BUILD SUCCESS”)。

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 1
    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 2

  2. 配置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>

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 3

  3. 编写并运行第一个脚本
    创建测试类 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());
            }
        }
    }

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 4
    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 5

    驱动下载完成后,脚本会执行并输出百度首页的标题。
    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 6

第一个程序脚本:打开页面并截图

以下示例演示如何使用 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")));
    }
  }
}

Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 7

运行后,截图 example.png 会保存在项目根目录下。
Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 8

说明:默认情况下,Playwright 以无头模式运行浏览器。若需查看浏览器UI,需在 launch() 方法中传递 new BrowserType.LaunchOptions().setHeadless(false) 参数。

使用 Node.js 环境进行脚本录制

Playwright 提供了强大的脚本录制功能(Codegen),可以自动将用户操作转换为代码。这里使用 Node.js 环境进行演示。

  1. 环境准备
    确保已安装 Node.js,然后在命令行中执行以下命令,初始化项目并安装 Playwright。

    # 检查Node.js版本
    node -v
    # 安装Playwright浏览器驱动
    npx playwright install
    # 初始化npm项目
    npm init -y
    # 安装Playwright测试库
    npm i -D @playwright/test

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 9
    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 10

  2. 启动录制
    输入以下命令,打开浏览器并开始录制对指定网站(如百度)的操作。

    npx playwright codegen https://www.baidu.com

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 11

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

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 12
    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 13

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

    Java结合Playwright环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 14

    将代码粘贴到你的 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环境搭建与脚本录制指南:从入门到第一个自动化测试 - 图片 - 15

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




上一篇:Git reflog代码恢复实战:详解误删分支与丢失提交的版本控制挽救技巧
下一篇:Cursor MCP插件实战指南:集成Cloudflare、Kubernetes等云服务提升开发效率
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 09:07 , Processed in 0.307524 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表