普元 Java(Puppeteer for Java)是一个开源的 Java 库,用于控制 Chrome 或 Chromium 浏览器,实现自动化的浏览器操作和数据爬取。它提供了一套简单易用的 API,可以模拟用户的操作,如点击、填写表单、截屏等。普元 Java 可以帮助开发者快速构建高效、稳定的 Web 自动化测试和数据爬取工具。

普元 Java 的优势主要体现在以下几个方面:

  1. 强大的控制能力:普元 Java 通过调用 Chrome DevTools Protocol(CDP)与 Chrome 浏览器通信,可以实现对浏览器的完全控制。开发者可以通过普元 Java 控制浏览器的打开、关闭、导航、页面元素定位等操作。

  2. 简单易用的 API:普元 Java 提供了一套简单易用的 API,使得开发者可以快速上手,编写自己的自动化测试和数据爬取脚本。API 的设计借鉴了 Puppeteer,使用起来非常直观。

  3. 丰富的功能:普元 Java 不仅支持常用的浏览器操作,如点击、填写表单、截屏等,还支持页面元素的截图、PDF 导出、网络请求拦截、模拟用户登录等功能。开发者可以根据自己的需求选择合适的功能进行使用。

下面我们使用普元 Java 来演示一个简单的自动化测试脚本,以便更好地理解其用法。

首先,我们需要引入普元 Java 的依赖库,可以在 Maven 或 Gradle 中添加以下依赖:

```groovy
dependencies {
    implementation 'com.github.superzhangfan:puppeteer-java:0.0.1'
}

接下来,我们创建一个 Java 类,并编写一个名为 testPuppeteer 方法:

```java
import com.github.superzhangfan.puppeteer.core.Browser;
import com.github.superzhangfan.puppeteer.core.Page;

public class TestPuppeteer {
    public static void main(String[] args) {
        Browser browser = new Browser();

        browser.onBrowserStart(() -> {
            Page page = browser.newPage();
            page.setDefaultNavigationTimeout(5000); // 设置页面超时时间为 5 秒

            page.onPageLoad(() -> {
                page.goto(" // 打开百度首页
                page.waitForSelector("#kw"); // 等待搜索框加载完成
                page.type("#kw", "Puppeteer for Java"); // 在搜索框中输入关键词
                page.click("#su"); // 点击搜索按钮

                // 等待搜索结果加载完成
                page.waitForSelector("#content_left", 5000);
                String title = page.getTitle(); // 获取页面标题
                System.out.println("Page title: " + title);

                page.screenshot("screenshot.png"); // 截图保存为文件
                browser.close(); // 关闭浏览器
            });

            page.navigate(); // 开始导航
        });

        browser.start(); // 启动浏览器
    }
}

在上述代码中,我们首先创建了一个 Browser 对象,然后通过 onBrowserStart 方法设置了一个回调函数,这个函数会在浏览器启动后执行。在回调函数中,我们创建了一个 Page 对象,并设置了页面的默认超时时间为 5 秒。

接着,我们注册了 onPageLoad 事件的回调函数。该函数会在每次页面加载完成后执行。在回调函数中,我们调用 goto 方法打开百度首页,并等待搜索框加载完成。然后,我们使用 type 方法在搜索框中输入关键词,并使用 click 方法点击搜索按钮。

接下来,我们使用 waitForSelector 方法等待搜索结果加载完成,并使用 getTitle 方法获取页面的标题。然后,我们使用 screenshot 方法对页面进行截图,并保存为文件。

最后,我们调用 close 方法关闭浏览器,结束测试。

以上就是使用普元 Java 进行自动化测试的一个简单示例。通过普元 Java,我们可以轻松地编写各