Playwright VS Selenium VS Puppeteer VS Cypress

参考:https://www.testim.io/blog/puppeteer-selenium-playwright-cypress-how-to-choose/前端

这四款自动化测试框架在咱们的公众号都有介绍。上周介绍了新出 Playwright,那这款工具备什么优势,是否值得咱们投入精力学习。java

关键对比

接下来,我会经过一些维度来进行对比。python

支持语言

  • Playwright: ✅✅✅✅ 支持主流语言:JavaScript & TypeScript\python\C#\Go\Java
  • Selenium: ✅✅✅✅✅ 支持主流语言:java\python\ruby\C#\C++\JavaScript
  • Cypress: ✅ 只支持 JavaScript & TypeScript
  • Puppeteer: ✅✅ 只支持 JavaScript & TypeScript \ python

覆盖浏览器

  • Playwright: ✅✅✅ 支持Chromium/WebKit/Firefox
  • Selenium: ✅✅✅✅✅ 运行在目前全部主流浏览器上(不包括国内套皮的浏览器)。
  • Cypress: ✅✅ 只支持 Chrome/Firefox
  • Puppeteer: ✅✅ 只支持 Chrome/Firefox

支持多标签 + 表单

  • Selenium: ✅✅✅ 经过 switch_to 切换,但很差用。
  • Cypress: ❌ 没有真正支持
  • Puppeteer: ✅✅✅✅✅ 更符合直觉的 API
  • Playwright: ✅✅✅✅✅ 更符合直觉的 API

为证实playwright 更简单,咱们来作个代码对比。web

测试建立速度

  • Selenium: ✅ Yes Selenium IDE能够录制脚本。
  • Cypress: ❌ 不支持脚本录制。
  • Puppeteer: ✅✅ Yes 基于Puppeteer Recorder录制脚本。
  • Playwright: ✅✅ Yes 基于 playwright codegen 命令录制脚本。

并行网格和基础服务

  • Selenium: ✅ Yes 托管或构建本身解决方案。
  • Cypress: 🤷 只能在本身的闭源付费云构建。
  • Puppeteer: ❌ 一般构建本身的
  • Playwright: ❌ 一般构建本身的。

稳定性

这个主要评估用例编写以后的失败率,不包含真的发现bug以后的失败。浏览器

Selenium: ❌✅ 复杂的自动等待机制。
Cypress: ❌✅ 复杂的机制,而且不能与框架一块儿工做。
Puppeteer:❌✅ 等待某些元素,但必须手工等待其余元素。
Playwright: ❌✅✅ 最好等待某些元素,但必须手工等待其余元素。ruby

智能定位:

Selenium: ❌ 不支持以多种方式选择元素
Cypress: ❌ 不支持以多种方式选择元素
Puppeteer❌ 不支持以多种方式选择元素
Playwright: ❌✅✅ 很是前景,开始支持自定义选择器引擎。框架

Debugging

  • Selenium: ❌✅ 远程教程网格依赖于网格提供的程序。
  • Cypress: ❌✅ 你甚至不是在写常规的JavaScript。
  • Puppeteer: ✅ 在IDE中编写和调试Javascript。
  • Playwright: ✅ 在IDE中编写和调试Javascript或其余语言。

Documentation and Resources

  • Selenium: ✅✅ 官方文档写得确实很差,可是第三方资料太丰富,相关的书籍也不少。
  • Cypress: ✅✅ 虽然社区很小,可是很热闹,官方文档也写的很是赞。
  • Puppeteer: ✅ 社区比较小,但目前有大量的教程。
  • Playwright: ✅❌ 工具比较新,API也在变化,文档和教程可能跟不上。

注:要分范围 1 ~ 5,表明分值,分值越高说明越优。工具

categories Playwright Selenium Cypress Puppeteer
支持语言 4 5 1 2
覆盖浏览器 3 5 2 2
多标签&表单 5 3 0 5
测试编写速度 4 4 4 3
并行,网格 0 4 2 0
稳定性 4 3 3 3
智能定位 3 2 2 2
Debugging 3 2 3 2
文档和资源 3 4 4 3

如何选择?

首先,这些测试工具都是基础。他们只是提供了一套API来定位和操做元素。并不能成为你自动化项目成功或失败的决定因素。性能

自动化的是否成功我认为主要取决于如下几个方面:学习

  1. 调研你的项目是否真的适合自动化。
  2. 是否真的找到自动化的应用场景。(好比,咱们用自动化测试埋点,用自动化配合检查App性能都是很好应用场景)
  3. 是否有足够人力投入到自动化中。
  4. 测试人员的水平,不要怀疑这一点,很多同窗还在定位元素面前磕磕绊绊。
  5. 是否有团队支持和配合。有些同窗还在纠结验证的问题,让开发配合一些很轻松可绕过,可你就是作不到。

好了,这些工具都没法决定自动化项目是否成功,那怎么选?

若是,你不懂而且也不打算学习JavaScript, 那么就不用选 Cypress 和 Puppeteer 了。

若是,你只是一个新手,那么仍是稳妥点,先学会Selenium,这是测试的必备技能。

我很是鼓励那些有一些自动化经验的同窗尝试学习JavaScript,他会让你对前端(web)技术有更深的理解,由于你要测试的就是前端(web)应用。就像我可灵活的控制元素的隐藏,修改属性,更快速的定位到疑难杂症的元素,这彻底是由于我作过前端开发。Cypress 或 Puppeteer 就是很好的选择。

固然,对于我来讲,新出的自动化工具,我都会关注和学习一下。从而找到它的亮点和优点分享给大家。

相关文章
相关标签/搜索