1、前言
公司的一个后盾管理系统我的项目比拟宏大,模块多,性能多,角色多,每个角色的权限不同,可进入的页面也就不同,页面中的按钮也不同,这样一个零碎如果遇到一次大的降级革新那么就须要投入大量的测试精力去测试每个页面及页面中按钮的权限是否正确,此时Leader 就有想法了,能不能用 node 打造一个自动化测试的工具呢?
,于是一个神圣而又艰巨的工作就派给我了。
因为之前没接触过自动化测试,忽然让我用 node 写这样一个工具,我必定是不晓得从何下手的,于是本能的去 Github
上搜寻看有没有相似产品,找到了以下这些,但都不满足我的需要:
- Autoline
国内大牛用 Python 写的一个工具,他把 python 的性能转化成了 UI,而后咱们在自动化测试工具的治理后盾就能够一步一步增加测试步骤,但它有个致命问题 – 测试步骤不能调整程序,后面一步错了前面所有的步骤都徒劳 - Autotest_platform
一款基于 POM 模式开发的 Web UI 自动化测试平台 - UI Recorder
UI Recorder 是由阿里开发的一款面向多端的 UI 自动化录制工具,相似于 Selenium IDE 但比 Selenium IDE 更加弱小!
这个工具属实是弱小,最开始就想用它的,最初发现它还是不能满足我的需要
我想要的成果到底是怎么样的呢,请看上面这张 Gif 图(我靠近 3 个月的成绩):
2、技术栈
主栈:node.js
+puppeteer
其余依赖:
- lowdb
存储测试后果数据 - log4js
写日志 - desktop-screenshot
屏幕截图,只在启动浏览器时应用到,用来屏幕的宽高,在关上浏览器时依据屏幕大小设置浏览器大小 - image-size
获取图片大小,与【desktop-screenshot】联合应用 - cheerio
用来向测试报告模板的 html 中插入数据
为什么抉择 Puppeteer
?
简略来说就是:因为 Puppeteer
是 Chrome 开发团队开发保护的并且基于 nodejs 的包
Puppeteer
的性能:
- 能够操作鼠标、键盘输入、点击事件等行为
- 能够向页面插入 js、css 代码
- 能够向页面执行函数(任何页面中 js 能执行的代码都能够执行)
- 能够拦挡页面中的申请
- 能够截图(只能截取以后页面)
3、难题
怎么获取页面的数据?
如用户信息、页面中的列表数据等怎么监听页面跳转了?
比方正在执行 A 页面中的测试,忽然认为的跳到 B 页面去了,此时应该完结 A 页面的测试怎么判断元素是否存在?怎么操作 dom?
怎么点击元素?
解决了上述问题,接下来就是如何编码的事件了。
4、实现原理
待我编写完开发手册后再来编写,嘻嘻 …
5、测试报告、日志
测试报告(测试报告是用 html 写的,比 word、excel 更灵便):
日志