Puppeteer 是一个 Node.js 库。使用 Puppeteer,您可以在所有基于 Chromium 的浏览器上测试您的网站,包括 Chrome、Microsoft Edge Chrome 和 Chromium。此外,Puppeteer 可用于网页抓取、自动化和测试目的。
由于 Puppeteer 只通过 DevTools 协议进行通信,因此只支持实现此协议的浏览器。因此,Safari(WebKit)、Firefox 和 IE 目前尚不支持。
无头浏览器测试允许在不使用图形用户界面 (GUI) 的情况下自动控制网页。
这使测试人员、用户、QA 团队或开发人员能够在不手动与显示屏上看到的浏览器交互的情况下,对 Web 应用程序进行自动化测试。
本质上,无头浏览器测试的工作原理是这样的,尽管它通常是通过简单的脚本完成的。它加速了测试过程,并在开发过程中提供快速反馈。
Browserless 是一个功能强大的基于云的解决方案,用于无缝的浏览器自动化、网页抓取和测试。它利用 Nstbrowser 的高级指纹库进行随机指纹切换,确保不间断的数据收集和自动化。
借助其强大的云基础设施,Browserless 允许轻松访问多个浏览器实例,简化自动化任务的管理。
您对网页抓取和 Browserless 有什么奇妙的想法和疑问?
让我们看看其他开发人员在 Discord 和 Telegram 上分享了什么!
让我们测试一下 Nstbrowser 仪表盘的登录功能。我们需要
这里我们选择更轻量级的 puppeteer-core:
pnpm install puppeteer-core
您可以在 Browserless 面板中找到您的 API 密钥:
import puppeteer from "puppeteer-core";
const token = "您的 api 密钥";
const config = {
proxy: '您的代理', // 必需;输入格式:schema://user:password@host:port 例如:http://user:password@localhost:8080
// platform: 'windows', // 支持:windows、mac、linux
// kernel: 'chromium', // 只支持:chromium
// kernelMilestone: '128', // 支持:128
// args: {
// "--proxy-bypass-list": "detect.nstbrowser.io"
// }, // 浏览器参数
// fingerprint: {
// userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.85 Safari/537.36', // userAgent 支持自 v0.15.0 起
// },
};
const query = new URLSearchParams({
token: token, // 必需
config: JSON.stringify(config),
});
const browserWSEndpoint = `https://less.nstbrowser.io/connect?${query.toString()}`;
const getBrowser = async () =>
puppeteer.connect({
browserWSEndpoint,
defaultViewport: null,
});
const main = async (req, res) => {
try {
const browser = await getBrowser();
const page = await browser.newPage();
await page.goto("https://app.nstbrowser.io/login");
} catch (error) {
console.error(error);
}
};
main();
现在,我们已经成功连接 Browserless 并访问了我们的目标网站,让我们完成测试流程,并通过截取屏幕截图来验证结果。
await page.waitForSelector('input');
const inputs = await page.$$('input');
await inputs[0].type('*****', { delay: 100 }); // 邮箱地址
await inputs[1].type('*****', { delay: 100 }); // 密码
const buttons = await page.$$('button');
await buttons[1].click();
await page.waitForResponse((req) => {
const url = "https://api.nstbrowser.io/api/v1/passport/login";
if (req.url() === url) {
return true;
}
});
await page.screenshot({ fullPage: true, path: "./nstbrowser.png" });
我们可以看到,我们已经成功登录到 Nstbrowser 并被重定向到仪表盘,表明我们的测试已经通过。
以下是 Puppeteer 与各种其他测试平台的详细比较:
Puppeteer 是一个 Node.js 库,提供高级 API 来控制无头 Chrome 或 Chromium 浏览器。
WebKit 和 Blink 分别是 Safari 和 Chromium 浏览器使用的布局引擎。它们负责渲染网页,而 Puppeteer 控制浏览器以执行自动化任务。
Puppeteer 通过调试协议直接与 Chrome/Chromium 通信,使其与这些浏览器紧密集成。
Selenium 使用 Chromedriver 来管理和控制浏览器,这使其能够支持多个浏览器(例如 Firefox、Safari、Edge)。另一方面,Puppeteer 侧重于 Chrome/Chromium。
Puppeteer 是一个现代的基于 Node.js 的库,用于控制无头 Chrome/Chromium。
PhantomJS 是一个基于 WebKit/Blink 的无头浏览器。但是,PhantomJS 已经过时,不再积极维护,这使得 Puppeteer 成为大多数自动化任务的更可靠和高效的选择。
Puppeteer 使用 Chrome DevTools 协议来控制 Chrome/Chromium,使其能够深入访问浏览器的功能。
Nightmare.js 是一个 JavaScript 库,使用 Electron 来渲染网页。它是为了易用性而构建的,但缺乏 Puppeteer 提供的性能和现代浏览器支持。
Puppeteer 是一个 Node.js 库,用于自动化浏览器任务,如网页抓取、PDF 生成和屏幕截图捕获。
Cypress 是一个基于 JavaScript 的端到端测试框架,专为测试 Web 应用程序而设计。它提供了一个用户友好的界面来编写测试,并自动处理异步操作,使其成为前端测试的理想选择。
Puppeteer 是一个功能强大且奇妙的工具,可以完成 Web 测试。使用 Browserless,您可以使用 Puppeteer 完成任何自动化任务。
我希望本文能为您打开一个全新的网站测试自动化世界。像往常一样,请务必查看 Nstbrowser 博客 和 文档教程,以获取更多令人兴奋的 Web 浏览器自动化内容!祝您编码愉快!