目前,除了前面介绍的Selenium,业界比较流行的Web自动化测试框架还有Puppeteer和Playwright这两款。本节将简单介绍这两款自动化测试框架,感兴趣的读者可以自行深入学习和研究它们。
Puppeteer是由Chrome开发团队开发的一款面向Chrome浏览器的开源Web自动化测试框架。Puppeteer目前只支持在Node.js运行环境下使用。Puppeteer的安装步骤非常简单,只需要执行命令npm install puppeteer即可。此外,可能还需要安装Puppeteer所需的Chrome浏览器二进制文件。具体安装命令为npx puppeteer browsers install chrome。接下来,我们来看一个Puppeteer的简单示例。
const puppeteer = require('puppeteer'); // 以异步执行的方式启动一个新的浏览器实例 (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); // 访问网页 await page.goto('https://www.baidu.com'); // 进行截图 await page.screenshot({ path: 'baidu_screenshot.png' }); // 在页面中执行JavaScript const title = await page.evaluate(() => document.title); console.log(title); await browser.close(); })();
对Puppeteer框架感兴趣的读者可以查阅Puppeteer在线文档https://puppeteer.bootcss.com/,或者其他相关资料。
Playwright是一款提供优秀跨语言和跨浏览器支持的Web自动化测试框架。它支持多种编程语言开发环境,例如Java、Python和C#等。同时也支持包括Chrome、Edge、Safari在内的多款浏览器平台。Playwright的架构与Selenium的架构类似,它们之间的主要区别是Selenium WebDriver通过HTTP请求与浏览器进行交互(CDP命令通过WebSocket请求进行交互),而Playwright主要通过WebSocket请求与浏览器进行交互。接下来,我们将介绍如何搭建基于Java语言的Playwright开发环境。
步骤01 在Maven工程的pom.xml文件中添加Playwright Java client Library客户端依赖包。
<dependency> <groupId>com.microsoft.playwright</groupId> <artifactId>playwright</artifactId> <version>1.42.0</version> </dependency>
步骤02 编写相应的爬虫程序。以下是一个简单的示例程序,该程序的功能是访问百度网页,填写搜索词并执行搜索操作,具体实现代码如下:
// 创建一个Playwright实例 Playwright playwright = Playwright.create(); // 使用 Chromium 浏览器类型,启动一个浏览器实例,设置为可见(非无头)模式 Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); // 创建一个新页面 Page page = browser.newPage(); // 在页面上导航到指定的URL,这里是 "https://www.baidu.com" page.navigate("https://www.baidu.com"); // 等待2秒,等待页面加载 Thread.sleep(2000); // 根据CSS选择器定位搜索输入框,并输入搜索词"Java网络爬虫精解与实践" page.locator("#kw").type("Java网络爬虫精解与实践"); // 根据CSS选择器定位搜索按钮,并单击 page.locator("#su").click(); // 等待2秒,等待页面加载 Thread.sleep(2000); // 关闭浏览器 browser.close(); // 关闭Playwright实例 playwright.close();
感兴趣的读者可以查阅其他有关Playwright的资料,本小节就不再详细介绍Puppeteer相关内容了。