图形化编程语言sikuli, 当时我就震惊了

1 Comment

你见过这样编程的么?

Sikuli.png
截几个图,说几个命令.电脑就乖乖的帮你做事.当时我就震惊了.
这就是Sikuli, vgod同学带给我们的一个神乎其神的东西.话说vgod童鞋的vim cheat sheet 还一直摆在我的桌前没有背熟,这下他在MIT带来的东西好玩多了.

一.什么是SIKULI

SIKULI是一个基于图形化编程语言.它的输入很多是基于截图的,再加上少量的命令.它不需要任何内部API的支持.能够自动操作任何屏幕内的元素.并且是夸平台的(依据JVM,但是JVM是夸平台的).

那SIKULI是啥意思呢, SIKULI在墨西哥语中表示上帝的眼睛(God’s Eye)

二.怎么编程阿?

SIKULI自带了一个IDE.非常小(12M).剩下的工作就是截截图,做点测试. 我也是刚使用不过30分钟.在写这篇blog之前做了一个自动打开firefox,登录Gmail,然后发送一条Buzz消息的自动化小程序.看看啥样子吧:
sikuli_gmail.png

sikuli_gmail_1.png

流程非常清楚:打开firefox,开启一个新的tab,输入gmail网址,然后是用户名和密码(我采用的是自动记录的的方式.) setAutoWaitTimeout(5000)等5秒钟(单位应该是秒吧,猜的!!!)
然后点击Google Buzz等待输入框出现,然后点击输入框, 使用type命令模拟输入”Hi I can change my status using Sukuli”,点击post,搞定!

三.使用感受

  • 编程体验相当好.当然一定要想清楚流程(有时候要很傻瓜的方式).基于截图的,有时候识别的不是很好.而且对模拟的环境要求较高.可能有时候自动化脚本不能执行;
  • IDE暂时比较简陋.按 (<–) 在tab间跳来跳去的;
  • 汉字输入(中间要有一个环节是自己去切换输入法);
  • 测试的时候有时候死锁独占资源.比如firefox的截图不匹配时,程序不会自动退出,而是等待匹配的图像.(可能有高级的条件判断语句等,还没看document).

四.它能干嘛?

只能说use your imagination吧. 随便说几个:

  1. 自动完成日常操作,收邮件,数据库备份,以及诸如清理系统垃圾(如何和系统定时程序如*nix的crontab结合成为了一个不错的脚本)(apple script也很强大,但是稍难);
  2. 自动发送消息(Twitter,Google Buzz, Plurk),如何SIKULI提供一些系统内置函数,比如时间函数,至少可以做个自动报时的机器人嘛;
  3. 完成一些程序和软件的自动测试,甚至比较NB的人可以用它来玩游戏,像鼠标自动点击器;
  4. 还有个比较N的,可以拿它去玩QQ的连连看游戏,输入截图,让程序自动去匹配,然后你就在边上看.嘿嘿!
  5. Jython的实现,可以使用Python去调用,方便集成;
  6. 让我知道了Image Processing还是很强的!