一.背景
web端ui自动化,主要为谷歌浏览器和少部分360极速浏览器,均为chrome内核。
中文文档:https://docs.cypress.io/zh-cn/guides/overview/why-cypress.html#
二.简单分析
cypress是做界面自动化的,说到界面自动化就不可避免的想到了selenium
。这些年玩过一些Web
界面自动化的方案,例如java+selenium,python+selenium,puppeteer,robotframework, silk test,cypress
等,除此之外还有很多大大小的框架,这边简单分析介绍下。
java/python+selenium
这种方法应该是用的比较多的了,各种框架都有各种问题,很多团队最后都选择了这种方式来写自动化,框架可能有各种限制,直接代码写方便自由,现在selenium api
已经成为web标准,基本主流浏览器都支持,但是缺点也很明显:维护麻烦,代码改动大,多人编写难管理,需要自己写框架对测试人员要求较高,一言以蔽之:硬核。
silk test
使用了近半年,是一个大而全的软件,优点是跨平台,稳定性好,对于写case,创建测试计划,case管理,执行到出报告等自己完整的逻辑。缺点是操作上比较复杂,国内学习文档少,自带的脚本语言有局限性也有学习成本,同时支持的其他语言比较古老,比如vb, .net等(现在支持java,但学习java的成本也不低),还有最重要的一点–贵!
robotframework
相比纯粹的如java+selenium
的模式,优点是门槛低,使用关键字来驱动,填表格就行,因为是基于python
,扩展性也不错。我个人觉得这个框架适合拿来练手,用做接口测试也是一个不错的选择。缺点嘛,就是出了问题比较难定位,界面有时候会卡顿,导入lib不能即时生效。
puppeteer
出自谷歌,是一个node
库,利用api
来通过 DevTools
协议控制 Chromium
或 Chrome
,支持headless
模式运行(默认就是headless
)。关于这个库,用的不多,尝试过使用Chrome
插件Puppeteer Recorder
来录制脚本,效果不是很好。优点是对于chrome
操作比较好,速度快。缺点是官方坑比较多,用来做爬虫似乎要比写自动化测试更好。
三.为什么使用cypress
以上说了这么多,是不是cypress
就完美了呢?先介绍下cypress
的优缺点
优点:
- Time travel功能,任意时间点回退都可重现当时场景的样式数据控制台打印
- 元素寻找简单可一键复制
- 无需额外设置超时时间,内置了合适的等待时间
- 执行超快,稳定性高
- 官网文档写的好,github中案例库齐全
- 对比同样热门的testcafe,issues的解决率远高于testcafe
缺点:
- 只支持chrome内核浏览器
- 对iframe支持不友好,无法做到实时调试,目前操作iframe内部元素的方法是第三方实现对于hash生成class或其他属性,使用一键寻址复制的属性下一次会失效。
- 对于多浏览器同时执行或者多标签场景只有折中办法
为什么推崇cypress
了?因为他执行够快够稳定,js脚本本身就轻,写起来也简单,自动记录每步快照,调试可以看到当时的画面,请求内容,执行的操作,无需自己设置每一步的超时时间。而对于新手来说,官方demo很全,官方有视频教程,另外一键复制元素位置岂不是美滋滋?