人,机器,机器人:我看 Sikuli

来源:互联网 发布:网络平台制作软件 编辑:程序博客网 时间:2024/05/25 08:12

每次回台中,在妈妈用来跟妹妹们讲 Skype 的电脑旁边,我总是会多看那张黄色的便利贴两眼。

上面其实很简单的写了 功能 > 选项设定 > 视讯设定 之类的字眼,看来应该是让老妈记得怎么样打开视讯之类的。

每次看到这个,我都会想:“如果充当亲友的 tech support ,不需要每回都:‘你去点选右下角的 开始 ,再点选 程式集 ,再点选圈圈跟叉叉......’,能够自动操作这些步骤,该有多梦幻啊?”

==
一家四口去高雄玩了一趟回来,打开 RSS Reader 才发现,vgod 跟另一位 Tom Yeh 弄的 Sikuli 变成最近的大热门:
Change The World!
Sikuli带来的意义与无限的潜力

(其实还有更热门的科技新闻,搞得大家整天都在 唉 来 唉 去,不过那个 唉 对我来说,基本上 iHavenone, iHavenoidea, 所以 iWillnotcomment)

先把在 vgod 网志的留言搬回来:

想要说的话太多了, 自从看到 Sikuli, 基本上脑内大爆炸, 第一次得要尝试用 mindmap 先打草图才能够发文谈 Sikuli 了

如果以 Client / Server 的角度思考, 传统上, 能够自己写 Server 的人, 在 Client端拥有最大的掌控权(这是有一次我听 Jeremy Allison比较 Novell NCP 跟 SAMBA 团队要使用微软的 SMB通讯协定的差别时, 他做的比较)

但是现实生活里, 就算你是拥有十八般武艺的程式设计师, 同时掌控 Server /Client 也是可遇不可求的机缘. 以我个人以前做网管收告警(Fault Management)的经验, 基本上我们是很贱(误)的,伺服器吐出来什么样格式的告警, 我们都得想办法吃下来 XD

在”只能从 Client 端努力”的前提下, expect 这个基于 Tcl 的 script 处理的是文字介面, 你之前介绍过的 Chickenfoot 处理的是网页, 现在 Sikuli 把更多可能性交给了更多人 :D

==
不过这样 clicking monkey 就要失业啦 :p


[演进]
我以前主要用的是 expect 网管的暗黑系法术:用 expect 和 autoexpect 写 BBS 机器人,冲上站次数,在 terminal 处理一些命令列的东西很好用(而且还有 autoexpect 可以把你的操作过程 录 下来,变成 expect 脚本)

后来看到 vgod 介绍 Chickenfoot:Web上的万能瑞士刀: Chickenfoot,看起来处理网页自动化操作很不错(不过这是一个 Firefox 的延伸套件,如果你想操作的网页只能用 IE 那就 !@#$%)

这次的 Sikuli ,直接用图像的方式,以 Python 语法(其实好像是 Jython)来指挥电脑,基本上跟文章一开头说的梦幻操作方式非常像呢!



vgod 有提到 Sikuli 也有类似 auto expect 的设计了:


SikuliScript只是这一串研究的开端和基石,在这之上其实我们还做了很多东西。例如说我们已经有一个能录制萤幕和使用者动作的程式,可以把使用者的动作自动转换成SikuliScript,也就是说使用者一行程式都不用写,只要把想做的步骤做一次,程式码和萤幕截图就会自动产生出来让你修改或直接使用。用这个录制程式,我们可以轻易的在现有的GUI系统上观看全系统的操作历史,甚至是自动redo某一部分操作。



[应用]
稍微搜寻了一下,除了 工作自动化 之外,有网友提到可以拿来做 操作教学 ,或者 UI测试。

[功能]
我个人已经试用 Sikuli,用来操作自己工作上会用到的一个系统,大概花了不到一个小时,就做到可以查询我要的资料,虽然距离我的目标(输入资料)还有点远,不过我对Sikuli 的第一印象是:真的很直观!(不过我找了半天,才知道滑鼠 double click 要写成 doubleClick ,第一个 C 要大写!)

不晓得 Sikuli 能不能对档案做读写?

以我的需求来说,我们每个月有一些固定的行程(帮客户做系统定期保养)必须要填进工作日志系统:客户机器序号是固定的,但是实际到场的日期跟时间当然每个月不一定,如果我可以在一个简单的 .txt 或是 .csv 里面把这些资料准备好,然后让 Sikuli来开档、读档,然后跑个回圈,帮我登入工作日志系统 key in ,那我只要中午吃饭的时候丢给 Sikuli 去跑就行啰!

另外, Sikuli 呼叫外部程式的 switchApp 指令,我还要研究一下怎么叫出 Windows 上的 IE ,虽说理论上可以用图形的方式达成,不过能够明确用指令列的地方,我还是希望用指令就好。

[评论]
thinker 在 这并不是一个创新 这篇有提到,其实以前也有类似 Sikuli 的东东 :D

至于我自己嘛,我还是引用前面 Jeremy Allison 的角度,如果你可以跟源头(Server端)沟通,让你的工作更轻松,那你不需要用到expect, chickenfoot, Sikuli 这一类的工具。(就算要用,我也倾向先看看能不能用 expect这种指令列的,不行才退而看看是不是能用 chickenfoot 这种透过网页的,最后才会用 Sikuli 这种抓萤幕硬上的)

当然,就算是备而不用,工具也是越多越好啰 :D

原创粉丝点击