前端自动话操作应用很广泛,从网购秒杀活动实现自动化抢购,到区块链货币高频交易前端脚本编写(非合作交易所不提供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--前端自动化操作的神器的更多相关文章

  1. 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作

    前端自动化(三)   合并压缩css.压缩js.添加时间戳.打包上线操作 此文在前两篇基础上对比参考,会很方便理解 gulp.task("delete",function(){ r ...

  2. 前端自动化神器LiveReload配合浏览器和less/sass使用方法

    前言:搜了半天,各种推荐,什么十大工具啦.优秀工具集合啦之类的咸淡文章,就是没有一个讲怎么弄的.配合官网的article自己研究了半天总算配置好了.顺便吐槽下官网关于sass/less设置这块说的模糊 ...

  3. 前端自动化学习笔记(一)——Yeoman,bower,Grunt的安装

    最近看视频学习了前端自动化的一些知识,确实让我大开眼界.感觉前端越来越神器了.同时跟着视频自己也尝试运用了一些工具去构建前端项目,但是中间遇见了很多坑,磕磕绊绊的才实现了一点功能,所以打算记录一下学习 ...

  4. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  5. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  6. Grunt安装配置教程:前端自动化工作流

    Grunt这货是啥? Grunt 是一个基于任务的 JavaScript 项目命令行构建工具. 最近很火的前端自动化小工具,基于任务的命令行构建工具 http://gruntjs.com Grunt能 ...

  7. Node.js前端自动化工具:gulp

    前端自动化工具 -- gulp 使用简介 gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是 ...

  8. 前端自动化工具 -- Gulp 使用简介

    gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用 ...

  9. 前端自动化构建工具——gulp

    gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...

随机推荐

  1. [bzoj3191][JLOI2013][卡牌游戏] (概率dp)

    Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字 ...

  2. [luoguP1072] Hankson 的趣味题(数论)

    传送门 由题意得 gcd(x, a0) = a1 ——> gcd(x / a1, a0 / a1) = 1 lcm(x, b0) = b1 ——> x * b0 / gcd(x, b0) ...

  3. 后台获得集合,变成json字符串,放到EL表达式,js进行获取遍历

    //把集合编程json字符串,放到el表达式 JSONArray array = new JSONArray(); JSONArray fromObject = array.fromObject(ar ...

  4. Mysql中Group By使用Having语句配合查询(where和having区别)

    注意 : having语句一般结合GROUP BY一起使用的..... Having短语与WHERE的区别!!! WHERE子句作用于基表或视图,从中选择满足条件的元组.HAVING短语作用于组,从中 ...

  5. Eureka集群的那些坑

    今天遇到一个Eureka集群的一个坑. 问题现场类似是这样的:两台Eureka组成的服务注册中心集群,两台服务提供方server1.server2,两个服务调用方client1.client2. 正常 ...

  6. XA transaction ,JTA , two phase commit , GTX0-j

    本文主要是对以前一直迷惑的几个名字的学习. xa transaction 简单查了一下,大概就是 distributed  transaction. 相比传统的transaction而言,传统的tra ...

  7. mybatis中jdbcType的作用和是否必须

    1. mybatis中 jdbcType 时间类型 当jdbcType = DATE 时, 只传入了 年月日 jdbcType = TIMESTAMP ,  年月日+ 时分秒 2. jdbcType ...

  8. Docker创建PHP镜像

    Step: 1. 创建Dockerfile FROM php:7.0-apache RUN chmod -R 755 /var/www 2. 创建镜像 docker build -t docker_n ...

  9. 服务器Hot Spare热备

    Hot Spare:热备用 当一个正在使用的磁盘发生故障后,一个空闲.加电并待机的磁盘将马上代替此故障盘,此方法就是热备用.热备用磁盘上不存储任何的用户数据,最多可以有8个磁盘作为热备用磁盘.一个热备 ...

  10. Reduce 任务的完整数据流