sikuli--前端自动化操作的神器
前端自动话操作应用很广泛,从网购秒杀活动实现自动化抢购,到区块链货币高频交易前端脚本编写(非合作交易所不提供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/代码的易读性(readableusable)
2/易读性带来的可传承性(用来培训和教学非常不错,传统的教程都说stepby step,而且配图,关键是这两者sikuli都有,而且还能够机器执行)
以前的说明书,用命令行的,都是描述非常清楚,但是图形界面的就麻烦了;很多时候采用截取全图的方式,那样说明书的体积又太大了
3/电脑视觉的延伸, 看自己输出生成的画面,更加智能化
4/可扩展性 这个目前和watchman是一样的都说基于通用的脚本语言,可以使用脚本语言的函数库(python+java)
sikuli--前端自动化操作的神器的更多相关文章
- 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作
前端自动化(三) 合并压缩css.压缩js.添加时间戳.打包上线操作 此文在前两篇基础上对比参考,会很方便理解 gulp.task("delete",function(){ r ...
- 前端自动化神器LiveReload配合浏览器和less/sass使用方法
前言:搜了半天,各种推荐,什么十大工具啦.优秀工具集合啦之类的咸淡文章,就是没有一个讲怎么弄的.配合官网的article自己研究了半天总算配置好了.顺便吐槽下官网关于sass/less设置这块说的模糊 ...
- 前端自动化学习笔记(一)——Yeoman,bower,Grunt的安装
最近看视频学习了前端自动化的一些知识,确实让我大开眼界.感觉前端越来越神器了.同时跟着视频自己也尝试运用了一些工具去构建前端项目,但是中间遇见了很多坑,磕磕绊绊的才实现了一点功能,所以打算记录一下学习 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- Grunt安装配置教程:前端自动化工作流
Grunt这货是啥? Grunt 是一个基于任务的 JavaScript 项目命令行构建工具. 最近很火的前端自动化小工具,基于任务的命令行构建工具 http://gruntjs.com Grunt能 ...
- Node.js前端自动化工具:gulp
前端自动化工具 -- gulp 使用简介 gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是 ...
- 前端自动化工具 -- Gulp 使用简介
gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用 ...
- 前端自动化构建工具——gulp
gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...
随机推荐
- STM32 实现 4*4 矩阵键盘扫描(HAL库、标准库 都适用)
本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可. 1.键盘原理图: 原理举例:先把 F0-F7 内部拉高,这样 ...
- 【Lqb T336】Cowboys
[链接] 我是链接,点我呀:) [题意] 出现AB就要交换一下 给你结果序列 问你原序列有多少种可能 首尾可以交换. [题解] 设 dp[i][0]表示i和i-1不交换,达到前i个字符序列的状态的方案 ...
- nyoj 31 5个数求最值
5个数求最值 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 设计一个从5个整数中取最小数和最大数的程序 输入 输入只有一组测试数据,为五个不大于1万的正整数 输 ...
- mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html
replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点 代码如下 re ...
- 控制公司(codevs 2051)
题目描述 Description 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.例如,福特公司拥有马自达公司12%的股票.据说,如果至少满足了以下三个条件之一,公司A就可以 ...
- my first emacs custom key binding
(defun comment-this-level () (interactive) (move-beginning-of-line 1) (set-mark-command nil) (fo ...
- 国际维修联合会IMA年度大会在瑞士圆满结束
瑞士卢加诺 ☆2016年4月5日至7日 中国设备管理协会国际交流合作中心主任.学府咨询(国际)集团董事长.IMA中国分会主席李葆文教授,应邀出席了4月5日至7日在瑞士卢加诺召开的国际维修联合会年度大会 ...
- 热烈庆祝国产编程语言R++1.8研发成功
R++是专为懒人设计的国产编程语言.支持无操作系统裸奔.编译成机器码.android.cocos2dx绑定.中文编程.闭包.惰性求值.JSON.Lisp的S表达式.内联汇编.伪代码.模板.宏.多重继承 ...
- Linux网络编程:UDP Socket编程范例
TCP协议提供的是一种可靠的,复杂的,面向连接的数据流(SOCK_STREAM)传输服务,它通过三段式握手过程建立连接.TCP有一种"重传确认"机制,即接收端收到数据后要发出一个肯 ...
- 表格属就用treegrid
http://maxazan.github.io/jquery-treegrid/ 如果想ajax后台动态添加表格数据然后再形成treegrid,那么可以通过后台给一个对应行索引的数组, 进行动态改变 ...