浏览器自动化框架比较:Selenium,Puppeteer和Cypress.io

举报
Jet Ding 发表于 2020/09/28 15:55:55 2020/09/28
【摘要】 对于当前的网络应用来说,编写和部署代码的时间已经缩短到了几秒钟。在这种背景下,测试的大部分责任都放在了开发人员身上,他们主要是依靠许多基于代码的测试自动化平台来进行测试。

1         引言

对于当前的网络应用来说,编写和部署代码的时间已经缩短到了几秒钟。在这种背景下,测试的大部分责任都放在了开发人员身上,他们主要是依靠许多基于代码的测试自动化平台来进行测试。

 

尽管这些工具很好,也很广泛,但并不是所有的开发人员都在使用它们。

没有编写测试代码的开发人员经常使用的借口有:

  • 他们没有时间,

  • 学习曲线太陡峭,

  • 他们已经尝试过了,但没有成功,

  • 或者他们的管理层并不关心。

 

然而,这些借口并不足以成为开发人员避免编写测试代码的理由。

 

自动化测试有助于在开发过程中更早地发现缺陷和问题。自动化测试也可以为广泛的应用场景编写。而且一旦创建了一个测试套件,它可以被现有的测试场景和未来的场景重复使用。

 

通过适当的工具和框架,测试自动化的入门很容易。自动化测试比以往任何时候都要简单。你需要做的就是选择两个框架:

一个是用于编写和运行测试代码的测试自动化框架,

一个是用于模拟Web浏览器的浏览器自动化框架。

 

通过本文我们就来了解一下这些框架的作用,哪些是最流行的选择,并讨论各自框架的优缺点。

2         浏览器自动化框架

浏览器自动化框架所做的事情远不止是模拟一个网络浏览器。

首先,这些框架可以启动完整或无头浏览器。无头浏览器是一种没有图形用户界面(GUI)的浏览器。无头浏览器比完整的浏览器更轻更快,这使得它们成为自动化开发人员测试的理想工具。

这些框架还提供了一个API,可以在你的测试代码中使用。这个API可以模拟用户的浏览器交互,捕捉屏幕截图,找出输入字段的值,并执行其他自动化任务。不幸的是,选择一个浏览器自动化框架将需要更多的工作。下面介绍三种最流行的选择:

2.1    Selenium Webdriver

2.1.1    官网

https://www.selenium.dev/documentation/en/webdriver/

2.1.2    许可 

Apache 2.0

2.1.3    特点

如果你正在寻找最安全的自动化框架,Selenium Webdriver是你的最佳选择。在这里介绍的三个框架选项中,Selenium Webdriver存在的时间最长。它是一个开源项目,有一个非常活跃的开发者和支持社区。Selenium Webdriver最好的一点是它是更广泛的Selenium生态系统的一部分。它不仅为JavaScript提供了开发者绑定,还为Java、C#、Python、Ruby、PHP和Perl等语言提供了绑定。

随着时间的推移,Selenium Webdriver已经拥有了广泛的功能,它是这里介绍的三个框架中唯一一个支持所有五个主要的网络浏览器(Chrome、IE、Edge、Firefox和Safari)的框架。

Selenium Webdriver的构建器API可以让你轻松配置和启动你想要的浏览器实例,并设置相关的配置选项。它还可以让你编写代码来模拟广泛的浏览器用户交互,例如在文本框中输入文本或点击按钮。

虽然Selenium Webdriver具有很好的通用性、功能和集成性,但由于它的运行速度比竞争对手Puppeteer和Cypress.io慢得多,所以它正在流失一些客户。

2.2    Puppeteer

2.2.1    官网

https://github.com/puppeteer/puppeteer

https://developers.google.com/web/tools/puppeteer/get-started

2.2.2    许可

Apache 2.0

2.2.3    特点

较新的框架之一是Puppeteer。Puppeteer对于模拟类似人类的浏览器交互行为非常出色。像Selenium Webdriver一样,它可以模拟广泛的浏览器用户交互行为。

Puppeteer还具有Selenium Webdriver所缺乏的一系列功能。它可以捕获屏幕截图并生成特定屏幕的PDF。如果你想用它来进行可视化测试,这是一个很好的选择。

它的高速度也是很多开发者选择测试工具的一大考量。

Puppeteer的另一个主要卖点是,它与Chrome及其调试和开发者工具高度集成。这一点应该不奇怪,因为和Chrome一样,Puppeteer也是由Google开发并支持的。因此,如果你只在Chrome中开发和测试你的应用程序,Puppeteer是一个很好的选择。然而,如果你使用Firefox、Edge或Safari进行开发或测试,Puppeteer无法正常工作,你应该选择Selenium Webdriver。

2.3    Cypress.io

2.3.1    官网

https://docs.cypress.io/

2.3.2    许可

MIT

2.3.3    特点

Cypress.io是一款免费、开源的前端测试工具。与前面两个框架不同,它是一个完整的测试解决方案。它没有宣称自己是一个通用的测试自动化解决方案,因为它的主要重点是对Web应用的用户体验进行端到端测试。

Cypress.io最大的卖点是它的速度非常快。它通过在浏览器内部运行来实现这一速度优势。这意味着它与你的应用程序的源代码在同一个执行循环中运行,这一点与Puppeteer和Selenium相反,另外这两个与渲染应用程序代码的浏览器进程在不同的进程中运行。这意味着Cypress.io不需要支持进程间通信所需的控制协议。这也解决了任何拖慢发送和接收命令和响应的系统或网络延迟。

当谈到讨论Cypress.io的任何缺点时,他们的文档对产品的优点和权衡持开放态度,令人耳目一新。可能影响你决定的三个最重要的缺点与Cypress.io在浏览器内运行测试的方式有关。

首先,Cypress.io的方法使其更难与后端服务器进行通信,这将意味着你需要安装额外的模块。

其次,它不支持测试多个浏览器tab。

最后,它一次只能控制一个浏览器实例。

3         趋势

在我们考察的浏览器自动化框架中,你需要在Selenium Webdriver和Puppeteer之间做出决定。如果你想要一个快速、一体化的解决方案,Cypress.io是最好的选择。

4         参考

https://www.browserstack.com/guide/top-javascript-testing-frameworks

https://www.lambdatest.com/blog/top-javascript-automation-testing-framework/

https://applitools.com/blog/comparing-javascript-browser-automation-frameworks/

https://testguild.com/top-8-essential-javascript-automation-frameworks/

https://stackshare.io/stackups/cypress-vs-puppeteer

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。