Puppeteer vs Selenium的主要区别

news2024/11/19 23:30:11

Puppeteer vs. Selenium:他们来自哪里?

  Google Puppeteer是一个 Node.js 库和浏览器测试框架。该技术旨在提供高级应用程序编程接口,以通过 DevTools 协议控制无头 Chrome。Selenium 支持多种浏览器和语言,而 Puppeteer 只专注于 Chrome、Chromium 和 Javascript。Puppeteer 是 Chrome 的远程控制库,而 Selenium 是完整的浏览器应用测试解决方案。

  Puppeteer 是由 Google 的一个团队编写的,他们对 Chrome 浏览器的内部拥有无与伦比的访问权限。Puppeteer v1.0.0 于 2018 年 1 月 11 日发布,从那时起已经发布了 89 个版本。最新版本 Puppeteer 13.6.0 于 2022 年 4 月 20 日发布。Puppeteer 社区有 414 名贡献者和超过 200,000 名用户。

  Puppeteer 用于屏幕截图测试、性能测试、网页抓取和自动化。与 Selenium 不同,Puppeteer 没有专门构建的集成开发环境 (IDE) 来编写测试脚本和管理测试套件。用户只需使用他们喜欢的 IDE 编写 Javascript 代码,利用 Puppeteer 库。Puppeteer 也可用于数据抓取。将 Puppeteer与代理集成可以通过多种方式完成。

  Selenium是一组支持浏览器应用程序测试的开源工具。Selenium 由一家名为 Thoughtworks 的公司创立,于 2004 年推出。它的主要重点是浏览器应用程序测试。它具有三个主要组件:Selenium WebDriver、Selenium IDE 和 Selenium Grid。Selenium 支持多种浏览器的应用程序测试:Chrome、Firefox、Safari、Internet Explorer、Edge 和 Opera。Selenium 脚本支持 JavaScript、JavaRuby、C# 和 Python

  Selenium 得名于 Jason Huggins 的一个笑话,他是 Selenium 的第一款产品“Selenium Core”的创造者,于 2004 年制造。当时,软件测试市场由 Mercury Interactive 主导。Jason 在给他的合作者的一封电子邮件中开玩笑说,“服用硒补充剂可以治愈汞中毒”。名字卡住了。

  Selenium 是一个开源解决方案。它最初于 2004 年推出,并从那时起稳步发展。从那时起已经发布了73个版本。Selenium 4.1.0 于 2021 年 11 月 22 日发布。社区拥有超过 632 名贡献者和超过 140,000 名用户。

  Selenium 用于 Web 应用程序测试、Web 性能测试和数据抓取。它对于需要在多个浏览器和平台上进行测试的应用程序特别有价值。硒具有三个主要成分。

  Selenium WebDriver是一个界面,允许用户编写可在浏览器之间互换工作的指令。可以为多种语言编写测试脚本。

  Selenium IDE是一个集成开发环境。它可作为 Chrome 或 Firefox 插件使用。它允许对功能测试进行记录、编辑和调试。记录和回放功能显着加快了测试的开发和执行。

  Selenium Grid允许通过将客户端发送的命令路由到远程浏览器实例来在远程机器上执行 WebDriver 脚本。Selenium Grid 可以在多台机器上并行运行测试,并集中管理不同的浏览器版本和浏览器配置。

  Puppeteer vs. Selenium:主要特点和功能

  Puppeteer 是一个完整的 Chrome 自动化解决方案。使用 Puppeteer 的主要优势在于它可以访问 DevTools 协议和控制 Chrome。由于 Puppeteer 是一个 Node 库,因此可以使用 npm 或 Yarn 轻松安装。Selenium 需要更复杂的安装来考虑所有模块以及您正在使用的特定浏览器和语言。Puppeteer 运行速度极快,而 Selenium 需要 WebDriver 将脚本命令发送到浏览器。

  Puppeteer 提供了重要的性能管理功能,例如记录运行时和负载性能、捕获屏幕截图,甚至限制 CPU 性能以模拟移动设备上的性能。Selenium 不提供这样的性能管理功能。

  Selenium 是一个专门用于测试在不同操作系统WindowsLinux 和 Mac OS)上运行于多个浏览器(Chrome、Firefox、Safari 等)的应用程序的解决方案。许多 Web 应用程序无法规定用户必须使用哪些浏览器。因此,开发人员必须针对多种浏览器测试他们的应用程序。

  Selenium IDE 用于编写 Selenium 测试脚本和套件。它支持记录测试脚本,极大地提高了测试人员的工作效率。另一方面,与 Puppeteer 的 Node.js 包方法相比,Selenium IDE 和 Selenese 是开发人员需要学习的另一组工具和语言。

  Selenium Grid 管理 Selenium 测试在多台机器/浏览器上的执行。这允许在多个浏览器和平台上执行一项测试。测试套件的并行执行减少了完成应用程序测试所需的时间。

  Puppeteer 与 Selenium:易用性

  Puppeteer 对于有经验的 JavaScript 开发人员来说很容易使用。Puppeteer 是一个 Node.js 包,其行为类似于其他 Node.js 包,例如 http、querystring、npm 或 util。开发人员将熟悉使用其类、方法和事件的方法。然而,这种方法是代码密集型的。Puppeteer 缺乏 Selenium 的测试自动化能力,这极大地提高了 QA 的生产力。

  Puppeteer 专注于控制 Chrome 浏览器。它不是专用的测试解决方案。它不提供像 Selenium 这样的 IDE,也不提供管理并行和分布式测试的工具。Puppeteer 的录制功能专注于性能管理。Selenium 的 IDE 记录器专注于记录测试脚本和套件。这些类型的自动化大大提高了生产力。

  由于它支持许多浏览器、语言和平台,因此 Selenium 是一个比 Puppeteer 更复杂的解决方案。Selenium WebDriver 和 Selenium Grid 的安装和配置非常重要,与使用 npm 或 Yarn 的 Puppeteer 相比。

  Selenese 是用于定义 Selenium 测试脚本的语言。它是一种高级语言,开发人员需要学习编写和执行 Selenium 测试。Selense 提供了一种“最小公分母”方法——它的命令可以在 JavaScript、Java、Ruby、C# 和 Python 中运行。Puppeteer 使用 JavaScript,但可以访问 Chrome DevTools 协议的各个方面。Selenese 有一个学习曲线。

  哪个更适合您?

  Web 应用程序的测试至关重要。在一个典型的发布周期中,质量保证 (QA) 可能会占用 30% 到 40% 的时间。QA 自动化工具可以显着提高开发工具的有效性和生产力。

  Puppeteer 是一个 Node.js 包,它提供了一个高级应用程序编程接口,以通过 DevTools 协议控制无头 Chrome。Selenium 是一整套工具,支持为各种浏览器、语言和操作环境开发和执行测试。

  Selenium 和 Puppeteer 都可以扩展以提供额外的功能。Selenium 和 Puppeteer 可以支持数据抓取。将 Selenium与代理提供商集成可以克服网站实施的地理和其他限制以阻止数据抓取。还有几个 GitHub 项目提供解决浏览器指纹识别的解决方案。

  底线

  Selenium 和 Puppeteer 之间的选择归结为您的需求。如果您的主要重点是测试浏览器应用程序,尤其是在多个浏览器上,那么 Selenium 是一个更好的选择。它专为跨平台测试而构建。如果你只专注于 Chrome 和 JavaScript,Puppeteer 更合适。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

Leetcode-每日一题【剑指 Offer 32 - III. 从上到下打印二叉树 III】

题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20…

清风数学建模——拟合算法

拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念 在前面的篇幅中提到可以使用插值算法,通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…

设计模式之原型模式详解

前言 在设计模式的系列文章中,我们前面已经写了工厂模式、单列模式、建造者模式,在针对创建型模式中,今天想跟大家分享的是原型模式,我觉的这种模式叫克隆模式会更佳恰当。原型模式的目的就是通过复制一个现有的对象来生成一个新…

vite4+vue3+electron23.3+ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包

vite4vue3electron23.3ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包 主要包依赖 "electron-store": "^8.1.0", //全局数据状态管理,可选择性安装"electron": "23.3.8","electron-builder": &q…

驱动控制LED灯

编写驱动代码,初步实现串口输入逻辑控制开发板的LED灯的亮灭 代码示例 head.h #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPD;unsigned int IDR;unsigned int ODR; }gp…

PDManer元数建模

学习文档 PDManer元数建模-v4-操作手册 (yuque.com)https://www.yuque.com/pdmaner/docs/pdmaner-manual#goEFW 建表 -- 创建用户表2 -- 创建用户表2 √ create table USER_TEST_WXX2 ( -- 主键自增generated by default as identity primary keyUSER_ID NUMBER g…

JAVA基础知识(一)——Java语言描述、变量和运算符

TOC(Java语言描述、变量和运算符) 一、JAVA语言描述 1.1 java语言描述 JDK、JRE、jVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些? JDKJre java的开发工具(javac.exe java.exe javadoc.exe) jre jvmjava的核心类库 为什…

【Linux】【驱动】应用层和驱动层传输数据

【Linux】【驱动】应用层和驱动层传输数据 绪论1.如果我在应用层使用系统0 对设备节点进行打开,关闭,读写等操作会发生什么呢? 2 我们的应用层和内核层是不能直接进行数据传输的3 驱动部分的代码4 应用代码5 编译以及运行代码 绪论 Linux一切皆文件! 文…

Matplotlib学习挑战第五关--绘制多图subplot() 和 subplots()

Matplotlib 绘制多图 我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。 subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。 1、subplot subplot(nrows, ncols, in…

2.阿里云对象存储OSS

1.对象存储概述 文件上传,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务,需要有存储的支持…

驱动DAY3 控制三盏灯亮灭

1.头文件 #ifndef __HEAD_H__ #define __HEAD_H__ //LED1 PE10 和 LED3 PE8 #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED1_RCC 0X50000A28 //LED2 PF10 #define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#endif 2…

Scractch3.0_Arduino_ESP32_图形化编程学习_Blynk一键配网点灯(七)

IO中断 目的器材程序联系我们 目的 使用自动配网连接Blynk 自动配网 Blynk 器材 硬件: 齐护机器人C02 购买地址 软件: scratch3.0 下载地址:官网下载 程序 程序上传后,在一定时间内联不上网会自动进入智能配网状态,如下图所示。 打开手机搜索名为…

AI芯片暴涨!沙特、阿联酋等国加入抢货行列 | 百能云芯

在全球半导体市场中,一场异常激烈的竞争正在酝酿,引发了各国科技巨头和企业的争相购买英伟达AI芯片的浪潮。除了美国科技大厂之外,包括百度、字节跳动、阿里等中国企业在内,沙特阿拉伯与阿拉伯联合酋长国也纷纷加入了这场角逐&…

【路由协议】使用按需路由协议和数据包注入的即时网络模拟传递率(PDR)、总消耗能量和节点消耗能量以及延迟研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

根据二叉树创建字符串

题目:给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对…

数学建模之“层次分析法”原理和代码详解

一、层次分析法简介 层次分析法(Analytic Hierarchy Process,AHP)是一种用于多准则决策分析和评估问题的定量方法,常用于数学建模中。它是由数学家托马斯赛蒂(Thomas Saaty)开发的。 层次分析法将复杂的决…

C++(Qt)软件调试---gdb调试入门用法(12)

gdb调试—入门用法(1) 文章目录 gdb调试---入门用法(1)1、前言1.1 什么是GDB1.2 为什么要学习GDB1.3 主要内容1.4 GDB资料 2、C/C开发调试环境准备3、gdb启动调试1.1 启动调试并传入参数1.2 附加到进程1.3 过程执行1.4 退出调试 4…

Debian11 Crontab

Crontab用户命令 可执行文件 crontab命令的可执行文件在哪儿? $ which -a crontab /usr/bin/crontab /bin/crontabcrontab命令的可执行文件有2个:/usr/bin/crontab 和 /bin/crontab $ diff /usr/bin/crontab /bin/crontab $diff 发现这两个文件并无区…

学习pytorch4 transforms的使用

学习pytorch4 transforms用法 常用类ToTensor1. ToTensor如何使用2. 为什么我们需要tensor数据类型PIL数据类型![在这里插入图片描述](https://img-blog.csdnimg.cn/f642055ddbfc4c228066331fc3cd53bf.png)tensor数据类型 代码tensorboard 启动命令 B站小土堆视频学习 常用类T…