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、Java、Ruby、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 是一个专门用于测试在不同操作系统(Windows、Linux 和 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 更合适。