前端自动话操作应用很广泛,从网购秒杀活动实现自动化抢购,到区块链货币高频交易前端脚本编写(非合作交易所不提供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. python正则表达式提取字符串

    用python正则表达式提取字符串 在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,有兴趣 ...

  2. js获取昨天,最近7天,最近30天通用方法

    function formatDate (val) { // 格式化时间 let start = new Date(val) let y = start.getFullYear() let m = ( ...

  3. idea 背景颜色设置

    1. 设置当前鼠标所在行颜色 2. 设置编辑区颜色

  4. 【Codeforces 1009C】Annoying Present

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 其实就是让你最后这n个数字的和最大. 加上的x没有关系.因为肯定都是加上n个x 所以直接加上就可以了 主要在于如何选取j 显然我们要找到一个位 ...

  5. java连接数据库(经常用)

    一.配置环境 1.首先下载sqlserver2008驱动文件,找到sqljdbc4.jar文件,将这个文件拷到C:\Program Files\Java\jdk1.8.0_121\jre\lib\ex ...

  6. N - Is It A Tree? 并查集

    A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one ...

  7. P1516 青蛙的约会 洛谷

    https://www.luogu.org/problem/show?pid=1516 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上, ...

  8. fibonacci数列的题目——剑指Offer

    https://www.nowcoder.net/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160&tPage= ...

  9. java JDBC 连接数据库查询数据与直接使用sql的疑问

    JDBC 封装连接是好的前提: SystemAuthorizingRealm c = new SystemAuthorizingRealm(); conn = c.getConnection(); / ...

  10. [转]Android程序框架设计

    这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下.欢迎指正.以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议. 1.一些概念 模式的定义: 每个模式都描述了一个在我们的环境中不 ...