如何使用 Puppeteer 和 Browserless 运行自动化测试?

news2024/11/23 11:29:31

Puppeteer:什么是 Puppeteer 及其功能

Puppeteer 是一个 Node.js 库。使用 Puppeteer,您可以在所有基于 Chromium 的浏览器上测试您的网站,包括 Chrome、Microsoft Edge Chrome 和 Chromium。此外,Puppeteer 可用于网页抓取、自动化和测试目的。

由于 Puppeteer 只通过 DevTools 协议进行通信,因此只支持实现此协议的浏览器。因此,Safari(WebKit)、Firefox 和 IE 目前尚不支持。

什么是无头浏览器测试?

无头浏览器测试允许在不使用图形用户界面 (GUI) 的情况下自动控制网页。

这使测试人员、用户、QA 团队或开发人员能够在不手动与显示屏上看到的浏览器交互的情况下,对 Web 应用程序进行自动化测试。

本质上,无头浏览器测试的工作原理是这样的,尽管它通常是通过简单的脚本完成的。它加速了测试过程,并在开发过程中提供快速反馈。

什么是 Browserless?

Browserless 是一个功能强大的基于云的解决方案,用于无缝的浏览器自动化、网页抓取和测试。它利用 Nstbrowser 的高级指纹库进行随机指纹切换,确保不间断的数据收集和自动化。

借助其强大的云基础设施,Browserless 允许轻松访问多个浏览器实例,简化自动化任务的管理。

您对网页抓取和 Browserless 有什么奇妙的想法和疑问?
让我们看看其他开发人员在 Discord 和 Telegram 上分享了什么!

为什么 Puppeteer 比类似的测试平台更好?

  • 强大的功能集: Puppeteer 提供对 Chrome 和 Chromium 浏览器的完全控制,支持页面导航、表单填写、屏幕截图、PDF 生成等自动化任务。它可以模拟浏览器中的用户操作,进行高度复杂的测试。
  • 无头模式: Puppeteer 支持无头浏览器模式,这使得它在后台执行自动化任务时更加高效和轻量级,无需加载图形界面,从而提高速度和资源利用率。
  • 跨浏览器支持: 除了 Chromium 之外,Puppeteer 还通过 WebDriver 协议支持跨浏览器测试,具有强大的兼容性和对多种浏览器环境的适应性。
  • 社区支持和完整文档: Puppeteer 拥有一个活跃的开发人员社区和详细的文档,使开发人员能够快速上手并获得社区的支持。
  • 与 Chrome 紧密集成: Puppeteer 与 Chrome/Chromium 的深度集成使其在浏览器自动化任务方面表现出色,特别是在页面性能监控和爬取准确性方面。

使用 Browserless 进行 Puppeteer 自动化测试

我们需要

  • 访问 NstbrowserNstbrowser 客户端
  • 然后通过 puppeteer 的自动化程序填写帐户和密码
  • 最后,点击登录按钮登录

第 1 步:安装 Puppeteer。

这里我们选择更轻量级的 puppeteer-core:

pnpm install puppeteer-core

第 2 步:获取您的 API 密钥。

您可以在 Browserless 面板中找到您的 API 密钥:

第 3 步:连接到 Browserless

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('18552540330@163.com', { delay: 100 });
await inputs[1].type('9KLYUWn3GmrzHPRGQl0EZ1QP3OWPFwcB', { 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 与各种其他测试平台的详细比较:

1. Puppeteer 与 WebKit/Blink:

  • Puppeteer 是一个 Node.js 库,提供高级 API 来控制无头 Chrome 或 Chromium 浏览器。

  • WebKit 和 Blink 分别是 Safari 和 Chromium 浏览器使用的布局引擎。它们负责渲染网页,而 Puppeteer 控制浏览器以执行自动化任务。

2. Puppeteer 与 Selenium:

  • Puppeteer 通过调试协议直接与 Chrome/Chromium 通信,使其与这些浏览器紧密集成。

  • Selenium 使用 Chromedriver 来管理和控制浏览器,这使其能够支持多个浏览器(例如 Firefox、Safari、Edge)。另一方面,Puppeteer 侧重于 Chrome/Chromium。

3. Puppeteer 与 PhantomJS:

  • Puppeteer 是一个现代的基于 Node.js 的库,用于控制无头 Chrome/Chromium。

  • PhantomJS 是一个基于 WebKit/Blink 的无头浏览器。但是,PhantomJS 已经过时,不再积极维护,这使得 Puppeteer 成为大多数自动化任务的更可靠和高效的选择。

4. Puppeteer 与 Nightmare.js:

  • Puppeteer 使用 Chrome DevTools 协议来控制 Chrome/Chromium,使其能够深入访问浏览器的功能。

  • Nightmare.js 是一个 JavaScript 库,使用 Electron 来渲染网页。它是为了易用性而构建的,但缺乏 Puppeteer 提供的性能和现代浏览器支持。

5. Puppeteer 与 Cypress:

  • Puppeteer 是一个 Node.js 库,用于自动化浏览器任务,如网页抓取、PDF 生成和屏幕截图捕获。

  • Cypress 是一个基于 JavaScript 的端到端测试框架,专为测试 Web 应用程序而设计。它提供了一个用户友好的界面来编写测试,并自动处理异步操作,使其成为前端测试的理想选择。

结束语

Puppeteer 是一个功能强大且奇妙的工具,可以完成 Web 测试。使用 Browserless,您可以使用 Puppeteer 完成任何自动化任务。

我希望本文能为您打开一个全新的网站测试自动化世界。像往常一样,请务必查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2198015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件,而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档,无论相关方…

电脑端视频通过PCIE到FPGA端转UDP网络视频输出,基于XDMA+PHY芯片架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我这里已有的以太网方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存UDP视频组包发送UDP协议栈MAC数据缓冲FIFO组Tri Mode E…

基于php+uniapp微信小程序的电子书阅读系统snxr5

目录 项目介绍技术栈和环境说明具体实现截图php技术介绍文件解析微信开发者工具HBuilderXuniapp开发技术简介解决的思路性能/安全/负载方面数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 项目介绍 (1)用户在安卓APP页面…

微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动

app.json "resolveAlias": {"~/*": "/*"},文件代码也没有问题,网上的方法试过来了,大模型AI也问过遍,熬夜到凌晨2点半,最不可思议的是居然是因为微信开发者工具版本的问题,我真的是笑死…

深入了解Oracle OCP认证,开启数据库专业之旅

使用Oracle数据库的公司内部,经常有员工们在讨论OCP认证(Oracle Certified Professional,Oracle认证专家),这是甲骨文Oracle公司提供的一种专业认证,认证用于使用者在Oracle技术领域的专业知识和技能。 在这里,有一点…

Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“

Qt小bug —— LINK :fatal error LNK1158:无法运行"rc.exe" 环境 Qt 5.14.2 MSVC 2015 x64 现象 解决 在电脑上找到rc.exe 和rcdll.dll (一般在C:\Program Files(x86)\Windows Kits*\bin\x64下面)拷贝到 C:\Qt\Qt5…

高并发 - 1.进程和线程

1.进程 1.基本概念 1.进程(Process):程序的一次启动执行(程序在执行过程中分配和管理资源的基本单位,操作系统资源分配的最小单位)2.程序:存放在硬盘中的可执行文件,主要包括代码指令和数据3.一个进程是一个…

常见的负载均衡

1.常见的负载均衡服务 负载均衡服务是分布式系统中用于分配网络流量和请求的关键组件,它可以帮助提高应用程序的可用性、可扩展性和响应速度。以下是一些常用的负载均衡服务: Nginx:一个高性能的Web服务器和反向代理,广泛用于实现…

【基于YOLOv5的反光衣检测预警系统】可检测图片、视频、摄像头,支持GPU加速检测以及语音播报预警

文章目录 演示视频系统界面项目环境系统界面功能项目框架介绍项目代码获取 ➷点击跳转至文末完整项目代码下载处☇ 演示视频 【基于YOLOv5的反光衣检测预警系统】可检测图片、视频、摄像头,支持GPU加速检测以及语音播报预警 系统界面 项目环境 项目运行所需环境为…

机器学习可视化教程——混淆矩阵与回归图

机器学习可视化教程——混淆矩阵与回归图 关于作者 作者:小白熊 作者简介:精通python、matlab、c#语言,擅长机器学习,深度学习,机器视觉,目标检测,图像分类,姿态识别,语…

大模型从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):基础知识!

LangChain系列文章: 基础知识快速入门 安装与环境配置链(Chains)、代理(Agent:)和记忆(Memory)快速开发聊天模型 模型(Models) 基础知识大型语言模型(LLMs&a…

MATLAB APPdesigner中的日期选择器怎样实时显示时间

文章目录 1.问题描述2.代码设置代码示例解释 1.问题描述 我们在做MATLAB的时候,一般需要在APP界面中加上时间显示,像下图中的右上角,在组件中有日期选择器,但是这个并不是实时显示的,我们还需要自己进行设置。 2.代码…

python pyinstaller打包exe遇到报错:RuntimeError: input(): lost sys.stdin

在使用python中的pyinstaller命令打包exe遇到报错:RuntimeError: input(): lost sys.stdin 一、问题复现 import datetimedef record_log():project_name = input("请输入项目名称:")l

毕设分享 基于python的搜索引擎设计与实现

文章目录 0 简介1 课题简介2 系统设计实现2.1 总体设计2.2 搜索关键流程2.3 推荐算法2.4 数据流的实现 3 实现细节3.1 系统架构3.2 爬取大量网页数据3.3 中文分词3.4 相关度排序第1个排名算法:根据单词位置进行评分的函数第2个排名算法:根据单词频度进行…

硬件开发笔记(三十一):TPS54331电源设计(四):PCB布板12V转5V电路、12V转3.0V和12V转4V电路

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/142757509 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿&…

Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

单机模式 单机模式是Hadoop最简单的运行模式。在单机模式下,所有Hadoop组件都运行在单个机器上,包括HDFS、MapReduce等。由于只有一个节点参与计算,单机模式适用于开发和测试阶段,不适合用于处理大规模数据。在单机模式下&#xf…

IDE启动失败

报错:Cannot connect to already running IDE instance. Exception: Process 24,264 is still running 翻译:无法连接到已运行的IDE实例。异常:进程24,264仍在运行 打开任务管理器,找到PID为24264的CPU线程,强行结束即可。 【Ct…

国内知名人工智能AI大模型专家培训讲师唐兴通讲授AI办公应用人工智能在营销与销售过程中如何应用数字化赋能

AI如火如荼,对商业与社会影响很大。 目前企业广泛应用主要是在营销、销售方向,提升办公效率等方向。 从喧嚣的AI导入营销与销售初步阶段,那么当下,领先的组织与个人现在正在做什么呢? 如何让人性注入冷冰冰的AI&…

YOLO11训练自己的数据集(吸烟、跌倒行为检测)

YOLO11训练自己的数据集(吸烟、跌倒行为检测) 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用YOLO11训练自己的数据集进行吸烟、跌倒行为检测准备数据进行训练进行预测进行验证 参考文献 前言 由于本人水平有限,难免出现错漏…