發表文章

目前顯示的是有「sikuli」標籤的文章

[Solved] Can't run sikuli IDE

我的系統環境是 ubuntu 16.10 64bit,這兩天裝 sikuli 時出現以往沒遇過的問題,記錄下來以免下次又遇到。 安裝方式大致說一下 1. 安裝 jdk 2. 安裝 sikuli: java -jar sikulixsetup-1.1.0.jar 3. 執行 runsikulix 時出現下列錯誤 (libopencv_core.so not found 或是 libtesseract.so not found) [info] runcmd: lsb_release -i -r -s [info] HotkeyManager: add Capture Hotkey: CTRL+SHIFT 2 (50, 3) [info] HotkeyManager: add Abort Hotkey: ALT+SHIFT C (67, 9) [error] RunTimeIDE: loadLib: libVisionProxy.so not usable: java.lang.UnsatisfiedLinkError: /home/nick/.Sikulix/SikulixLibs_201510051707/libVisionProxy.so: libopencv_core.so.2.4: 無法開啟共用目的檔: 沒有此一檔案或目錄 [error] RunTimeIDE: loadLib: libVisionProxy.so not usable: java.lang.UnsatisfiedLinkError: /home/nick/.Sikulix/SikulixLibs_201510051707/libVisionProxy.so: libopencv_core.so.2.4: 無法開啟共用目的檔: 沒有此一檔案或目錄 [info] runcmd: ldconfig -p [info] runcmd: wmctrl -m [error] RunTimeIDE: fatal error: java.io.IOException: Cannot run program "wmctrl": error=2, 沒有此一檔案或目錄 [error] LinuxSupport: checking: wmctrl not available or not work...

非同步、交互式程式編寫工具 (sikuli、expect)

非同步、交互式程式編寫工具 (sikuli、expect) 先前發布的 相見恨晚自動化測試工具 sikuli ,可以用圖案去編寫程式流程,適用於自動化測試、一鍵執行程式及指令。 用 sikuli 編寫程式是很特別的體驗,概念上來說在程式流程裡,因為無法預期下一個作業或圖案的出現時間,常會有 wait 的情形, 這樣非同步的訊息傳遞、接收、執行,在這工具上變得很自然。 這次在 unix 系統上透過 expect 自動連上 bbs,透過 expect 自動收集想要的資料,並經由 log file 取回資料,再做進一步的資料整理。 expect 讓我有一種既視感,啊~就是 sikuli 呀! 寫程式流程時的體驗相近,sikuli 流程控制時,當發現某個圖形就去點擊另一個圖形。 expect 流程控制時,當發現某段文字就輸入你要的文字。 wait then action,又是個不可多得的好工具。 expect 是用 Tcl 語法 (筆者也是第一次看到 Tcl),expect 相關資料很少,不過還是有找到比較完整的語法書。 Welcome to the Tclers Wiki!   這次以 expect 為主體完成的練習題,自動登入 ptt、查詢某位網友的動態、上線時間、ip等資料,再進行資料整理。 條列中間遇到的一些問題 1. 編碼問題: ptt 是 BIG5 編碼,ubuntu shell 預設是 UTF-8 編碼,所以會出現有亂碼的問題。 解決方法是透過 iconv -f UTF-8 -t BIG5 file_name -o output_file_name  (將 UTF-8 轉成 BIG5) 如果遇到錯誤訊息, iconv: 位置 xxxx 有不合法的輸入序列,可能是語系的問題,locale LANG 設成 BIG5 就可以了。 範例: [osboxes@osboxes log]$ locale LANG=zh_TW.UTF-8 LANGUAGE=zh_TW:en_GB:en LC_CTYPE="zh_TW.UTF-8" LC_NUMERIC=zh_TW.UTF-8 LC_TIME=zh_TW.UTF-8 LC_COLLATE="zh_TW.UTF-8" LC...

相見恨晚的自動化測試開發工具 Sikuli

圖片
2010年由一位在 MIT 就讀的台灣人發表的 graphic script language, 有別於一般的開發工具,利用一些截圖加上一些簡單的語法就可以操作電腦滑鼠、鍵盤。 開發這工具最難的,我覺得是圖形辨識跟操作行為的判斷。 這工具提供的語法滿完整的,不同的情境都可以簡單的使用, 搭配 Python 語法可以更靈活的操作。 我用了兩個小時的時間,就可以完成安裝並輕易完成一個自動化訂票的 script。 坦白說,效果讓我感到非常的驚豔,可能是本身是開發人員,能夠了解這軟體的困難。 只是覺得自己怎麼可以這麼 lag,六年前的玩意現在才知道。 -- 安裝步驟 -- 先到 Sikuli 官網  下載  SikuliX 目前版本是1.1.0 檔案是 .jar,也就是 java 程式,所以請先安裝 jre 環境。 依教學是說只要檔案下載下來,直接點兩下執行,就會自動下載需要的檔案, 還有一個執行 Sikuli IDE 的批次檔。 安裝過程遇到 "Could not find the main class. Program will exit!" 直接在 console 下指令 " java -jar sikulixsetup-1.1.0.jar" 就會自動下載並安裝起來了。 語法的部份我是參考這個範例    Sikuli的入門使用 -- 遭遇問題 -- 寫範例的過程遇到兩個問題,一個是中文的輸入問題、一個是按鍵的問題。 一、中文輸入的問題,網路上查到的解法是 type(u"中文") 或是 paste("中文"), 實際使用出現的都是亂碼。 最後解法是 paste(unicode("中文", "utf8")) 二、按鍵問題是一些特殊鍵的輸入,例如 windows 鍵 + 字母的特殊組合鍵、Enter 鍵。 這邊統一解答,windows 鍵+字母的特殊鍵組合是 type("d",KEY_META) , 以這範例表示的是 windows 鍵 + d (一定要小寫唷!) Enter 鍵是 type(Key.ENTER)...