Charles Z.

Sikuli,一个神奇的软件


双十一淘宝营业额三百多个亿,总理都忍不住点个赞,我也没闲着,鼓捣了个小东西凑热闹

淘宝双十一真是煞费苦心,各种红包各种有货,实验室同学一直在不停的刮刮乐,我感动得不行,决心采用一点低科技的东西帮助她……

刮刮乐的流程非常的简单,就是用iPhone客户端打开页面,在屏幕上滑动几下模拟刮奖的过程,刮开之后就会弹出一个Dialog告诉你是否中奖,然后点继续刮奖,然后就继续刮……

代码
如此重复儿简单的操作,用点自动化的脚本,应该是手到擒来,自然想到了sikuli

自动化脚本sikuli

  • 大名鼎鼎的sikuli是MIT的用户接口设计组的一个开源项目,旨在帮助我们做关于界面操作的自动化处理工作,说白了就是能够重复的做一些鼠标点击、键盘输入的事件
  • sikuli的牛逼之处一:IDE太好玩了,能直接放图片进去,用得时Python脚本,人性化的一B啊!另外这种截图,各种命令组合,真是奇妙啊,只有你想不到,没有做不到
  • sikuli牛逼之处二:用到了图像识别,而且识别的异常的好,即使图像不是完全匹配也能识别

工具有了,下一步就是怎么能用sikuli来控制iPhone,iPhone上控制PC的软件一大把一大把的,但是反过来控制的很少很少……因为iPhone封闭性强,做到实时的录屏有点难为人了。

搜索了很久看到大家都用TeamViewer,我下载下来发现怎么都连不上,不知道是不是MAC上得软件版本和iPhone上得app版本不匹配还是路由器的问题。

失败之后,再去找发现了Veency这个插件,Veency允许我们通过任何Mac或PC访问iPhone,在越狱商店里能搜索到Veency,好像是Saurik开发的一个插件

MAC控制iPhone:VNC

  • 在Cydia里面搜索Veency,安装即可
  • 在MAC上下载VNC Viewer
  • MAC和iPhone连在同一个内网
  • 在设置里看下iPhone的IP地址,把这个地主输入到VNC Viewer上,点击发送请求
  • iPhone作为服务器,MAC作为客户端,就能够在MAC上看到手机里的实时画面了,可以鼠标来操作
  • 小缺陷是MAC上得显示画面略卡(我用的式touch3代32g),没想明白是什么原因

编写脚本

能操作了,最后就是写脚本,如图所示:
代码
基本认识英文就能读懂代码了。

  • find 查找某一图像
  • wait(a image,FOREVER)等待一个图像直到永远……
  • hover鼠标hover上去

脚本写的还算鲁棒,不过运行起来比较慢,我考虑原因可能是sikuli的原理毕竟都是再用图像的识别,这样窗口的搜索肯定会慢,而且我写的代码里面没有制定搜索范围,这样肯定是全屏搜素,效率更低

最后这个软件虽然能够良好运行,但是我得说淘宝那概率低得,半天时间刷出来4元,放弃……

Show Comments