抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

一.背景

web端ui自动化,主要为谷歌浏览器和少部分360极速浏览器,均为chrome内核。

官网: https://www.cypress.io/

中文文档: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 协议控制 ChromiumChrome,支持headless 模式运行(默认就是headless)。关于这个库,用的不多,尝试过使用Chrome插件Puppeteer Recorder来录制脚本,效果不是很好。优点是对于chrome操作比较好,速度快。缺点是官方坑比较多,用来做爬虫似乎要比写自动化测试更好。

三.为什么使用cypress

以上说了这么多,是不是cypress就完美了呢?先介绍下cypress的优缺点

优点:

  • Time travel功能,任意时间点回退都可重现当时场景的样式数据控制台打印
  • 元素寻找简单可一键复制
  • 无需额外设置超时时间,内置了合适的等待时间
  • 执行超快,稳定性高
  • 官网文档写的好,github中案例库齐全
  • 对比同样热门的testcafe,issues的解决率远高于testcafe

缺点:

  • 只支持chrome内核浏览器
  • 对iframe支持不友好,无法做到实时调试,目前操作iframe内部元素的方法是第三方实现对于hash生成class或其他属性,使用一键寻址复制的属性下一次会失效。
  • 对于多浏览器同时执行或者多标签场景只有折中办法

为什么推崇cypress了?因为他执行够快够稳定,js脚本本身就轻,写起来也简单,自动记录每步快照,调试可以看到当时的画面,请求内容,执行的操作,无需自己设置每一步的超时时间。而对于新手来说,官方demo很全,官方有视频教程,另外一键复制元素位置岂不是美滋滋?image.png

评论