SIKULI 為 GUI 自動化開了一道門
01/28/2010, 13:21 - Open Source
前天試用了一下來自台灣台中的 vgod 在MIT修業兩年的成果, SIKULI Project, 發覺這真的是像 vgod 自己在 Blog 說的是會改變 GUI 世界的東西啊. 這是可以將 GUI 的原本需要人一個一個click的用法, 變成 batch 的方式. 也就是說可以將多個 GUI 程式經由 SIKULI 串在一起, 完成一件事, 或者是可以將原本需要人用Mouse在電腦之前,一步一步的確認及回應, 現在可以將這些動作自動化了. 可以自動化對於常用電腦執行固定工作項目的人,是很重要的一個需求.讓電腦將經常需要重覆的工作自動化, 這樣人才有時間作別的事, Work Smart, do'nt work hard, 意思是說要聰明的工作, 而不要白費力氣的工作啊. 有了自動的 GUI script 正好補完了多年來 GUI 無法自動化的缺口.在Macintosh 有 Apple script可以作類似的工作, 不過前提是 GUI 程式要有支援 Scriptable 的介面, 和 Apple Script 連結起來, 才可以用 script 控制 GUI 的程式工作. 而在 UNIX 系統上(Linux/BSD/Solaris/AIX...都是), 可以用的 script 就更多了, Shell script, Perl, PHP, Python, Ruby, TCL/Tk, Expect等等, 各有不同的語法及用途, 不過有一個共通點, 就是只能用在文字模式, 或是自己所構成的 GUI 環境, 無法和別的 GUI 程式互動. 在 Microsoft 的作業系統上的 script 就更弱了, 來自80年代的 DOS batch file, 以少得可憐的指令, 及奇怪的用法, 一樣是工作文字模式下, 可以經由 VBScript 作出 GUI 及使用 OLE 和別的程式作有限度的互動, 雖然有人作出了 Autoit 和 AutoHotkey, 不過都需要使用文字程式碼寫成 script, 而這都需要一定的程式語言使用背景才可以完成,還是沒有 SIKULI 直接及簡單. 以前有一個作業系統叫 BeOS,可以用Cortex 在 GUI 中將各不同的影音來源輸入和輸出串在一起,一起工作,例如從介面錄音之後直接送到MP3 encoder壓縮後,再送到音效卡輸出,全部用GUI將線接在一起就可以,不過 BeOS 已經是昨日黃花,已經進入歷史了,現在有的只有一個相容的 Open source 計畫,叫作 Haiku。
SIKULI 使用的方法說起來也很簡單, 就是先將要做動作的圖象, 用 screen capture 給剪下來, 在執行 script 時進行比對, 若有一定程度的相似性(可在 script 中設定),就作 script 中指定的動作, 如 type 一段文數字,或是按一下 botton. 這樣子的作法是比較慢, 但好處是沒有作業系統相容的問題, 也沒有需要連結程式庫或預先作好的介面問題, 一切都和人在使用 GUI 介面時一樣, 用眼睛看, 選擇相對 icon, 作出對應的事件,像是按一次,或兩次, 或輸入資料等. 夠直接了吧!
我花了三分鐘就作了一個可以將 Windows 關機的 script.

簡單吧,在 SIKULI 的網頁上還有很多的例子。
最棒的是 SIKULI 是 Open source, 所以應該可以在任何電腦系統上,經過一定的修補後執行. SIKULI 使用 Jython, 所以要有 Java JDK/JRE 才可以執行.不過在 Windows 版的好像 save 就會 crash, 而 OS X 版的就不會. Linux 還在和 OpenCV Library 打架中. 在 Windows 版本上可以設定 screen capture 的時間 delay, 以免還沒有找到要按的按鍵就 timeout 了. 我是設成 3 秒, 好像比較可以符合慢慢的 Windows XP.
SIKULI 使用 Jython, 所以要有 Java JDK/JRE 才可以執行. 在作 screenshut 時要注意的是背景顏色, 會干擾圖象辦認的正確, 在使用時要小心. 也可以先用別的程式將圖象抓下來, 再放到 script 中, 可以節省時間. 我看到的是 SIKULI 使用 png 格式, 不知道 jpeg 和 gif 可不可以. 因為 SIKULI 現在還在 beta 版, 所以文件部份只有簡單的說明1, 希望未來會有較多較詳細的說明.
不過因為 SIKULI 是使用圖象辦認,所以看來 script 的可移動性會低一點,因為各作業系統,或每個人使用的圖象都可以自行改變,而改了當然就無法正確辦認出來了。
現在 vgod 用 SIKULI 為大家開了一扇門, 接下來要如何使用就看我們了吧! 像是測試軟體的可用性, 操作測試儀器, 或是經由多個程式共同完成一個工作等等. 去拿來試試吧, 並把你認為可以加強或不足的部份告訴 vgod , 或者自己從 source code 修改成你要的樣子.
SIKULI 網址 http://sikuli.org
vgod Blog http://blog.vgod.tw
vgod 在 twitter 上開了一個 SIKULI 的專推 sikuli@twitter
chiahsien
01/28/2010, 14:34
很佩服 vgod,他在寫神乎…之道的時候,我就在想,vgod肯定是高人一枚,
也好奇高人在忙什麼?
在噗浪看到vgod的噗,
連過去看就嚇到,
這玩意兒真好用。
這一扇門真的很神!
Administrator (Tasuka)
01/28/2010, 17:57
可以到 MIT 的都不會是簡單的人,但這個 SIKULI 也是還有改善的空間。比如說執行效率,或者是辦識的正確率等。因為是 Open Source,可以大家一起來解決喔。回應












