普元 Java(Puppeteer for Java)是一个开源的 Java 库,用于控制 Chrome 或 Chromium 浏览器,实现自动化的浏览器操作和数据爬取。它提供了一套简单易用的 API,可以模拟用户的操作,如点击、填写表单、截屏等。普元 Java 可以帮助开发者快速构建高效、稳定的 Web 自动化测试和数据爬取工具。
普元 Java 的优势主要体现在以下几个方面:
-
强大的控制能力:普元 Java 通过调用 Chrome DevTools Protocol(CDP)与 Chrome 浏览器通信,可以实现对浏览器的完全控制。开发者可以通过普元 Java 控制浏览器的打开、关闭、导航、页面元素定位等操作。
-
简单易用的 API:普元 Java 提供了一套简单易用的 API,使得开发者可以快速上手,编写自己的自动化测试和数据爬取脚本。API 的设计借鉴了 Puppeteer,使用起来非常直观。
-
丰富的功能:普元 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,我们可以轻松地编写各