前端自动话操作应用很广泛,从网购秒杀活动实现自动化抢购,到区块链货币高频交易前端脚本编写(非合作交易所不提供api的情况下)。
自动化的流派分为2类,一类是对DOM对象进行解析的,这个是主流,但是受特定平台的限制,而且一定目标前端代码变了,自动化脚本一般都要重写。
另一个就是近年来出现的“非主流”--sikuli。它是通过类似图像识别的原理进行自动化操作的,不受目标前端代码修改的影响。
之前在工行因为自动化测试的原因,研究过一下sikuli,记录在这里:
相比selenium,简直是神器:
1.不仅能够用在web上,而且能用在exe上,估计新终端也能够用(终于解决了这个最大的问题)
2.脚本编写的易学性、工具的易用性还不错
3.从目前情况看工具还是稳健的,安装也方便(我部的jdk普遍是1.6左右,正是推广的黄金时期)
下载安装:
http://www.sikuli.org/download.html 注意:目前其仅主持32位的1.6版本的jdk,下载的包很小20m,解压后就可以运行,目前最新版本是r930
运行时注意事项:
1.有个很好地“迷惑”或者提升执行通过率的方法,就是打开那个html页面,还有不能打开程序目录,因为哪里有各种要用的图标。。
2.有多个屏幕对程序运行的影响还待考察(案例编写必须严格在一个屏幕下进行,否则复杂度大大提高,我把notes扔到另外一个屏幕,结果脚本报错) 另外,截图要用他自带的工具比较方便
3.注意python语法, 没有类型if等不用括号用缩进(科技极简主义) java要编译,而python不用 python没有class和main函数
4.最危险的是“起飞”阶段 如何打开一个应用?
能想象一下,如下两个图标的不同,就让脚本无法运行(j见附图)
5.大规模脚本如何编写规范?首先,桌面主题就要统一,否则可能对截取造成问题
以如下问题为例子,经我的windows换用windows经典主题后,我在工行主题上截取的图,就无法使用了,脚本无法运行
因为界面现在看起来已经是这样了
但是用win7透明主题,倒是可以运行脚本的
(注意颜色深度的变化,所以sikuli有一定的变化兼容性,但是尽量不要有这方面的尝试)
6.桌面上存在小工具遮挡的时候也不行
总结:不能有遮挡 不能有多屏 不能有截图
sikuli的代码简单到什么程度呢?下面这个截图可以说明一切,这是个我写的邮箱自动登录的代码,几乎是人都可以看懂,这是sikuli最大优势:
那么问题来了?现在是图形的识别,如果做断言呢?现在这个工具还只是操作自动化的工具
图形断言:可以使用exists()来判断操作成功后的打勾是否存在
文字断言:需要使用OCR功能,
首先,sikuli绝对有OCR功能,他的截图命名,就是用识别后的文字命名的
sikuli的好处:
1/代码的易读性(readable usable)
2/易读性带来的可传承性(用来培训和教学非常不错,传统的教程都说stepby step,而且配图,关键是这两者sikuli都有,而且还能够机器执行)
以前的说明书,用命令行的,都是描述非常清楚,但是图形界面的就麻烦了;很多时候采用截取全图的方式,那样说明书的体积又太大了
3/电脑视觉的延伸, 看自己输出生成的画面,更加智能化
4/可扩展性 这个目前和watchman是一样的都说基于通用的脚本语言,可以使用脚本语言的函数库(python+java)
有没有可能把selenium和sikuli结合起来?这个问题可以好好研究。前端自动化的春天来了~~