發表文章

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

非同步、交互式程式編寫工具 (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...