1. SikuliX 本體下載
首先你必須要下載SikuliX (廢話)
(撰寫本文時, SikuliX版本為 sikulixsetup-1.1.2.jar)
http://sikulix.com/quickstart/
由於SikuliX IDE是運行在Java的環境中, 請確保你的電腦至少有 JRE
可以透過Java的官方網站檢查 (請使用IE打開此連結)
安裝完成 JRE 後, 再開始安裝 SikuliX
0. 在你喜歡的位置新增一個資料夾,
把剛剛下載回來的sikulixsetup-xxx.jar放進去.
雙擊開始安裝
1. 諸位應該都沒有安裝過, 直接點選"是"即可
(有安裝過的記得先備份一下)
第三個 Tesseract 是 1.1.2 新整合的一項 Open Source 的 OCR 功能,
有辨識文字需求的朋友可以安裝看看.
如果有遇到問題再回到這步選"否"安裝2.5.4
我自己是沒遇到啥問題....
2. 簡單的使用範例
1. 點擊 runsikulix之後就會打開 SikuliX 的 IDE
2. 點選find之後, 自動進入截圖的模式, 把"我的電腦"框起來看看
3. 把上面那行複製貼上, 將第二行的 find 改為 doubleClick
4. 點選"慢動作執行", 應該可以看到"我的電腦"被點開了
3. 一些實用技巧
1. 強制中斷: ALT + SHIFT + C執行的時候需要強制中斷Sikuli, 可以使用此命令
2. 匯入自訂功能
像是需要random功能的話, 可以使用這個方法匯入:
from sikuli import * import random
當然也可以加入自己的Path
myScriptPath = "C:\\PATH\\TO\\YOUR\\FUNCTIO\\MyFunction.sikuli" addImportPath(myScriptPath) from sikuli import findAndClick
*** 加入自定義腳本後, 請重新執行SikuliX
3. 為了跟 GBF 扯上一點關係,
這裡順便提供一個簡單的隨機點擊腳本: (其實好像也不需要下一篇了 XD)
from sikuli import * import random def findAndClick(Pattern): match = find(Pattern) print match nW = match.getW() - 10 nH = match.getH() - 10 nX = match.getX() + random.randint(10, nW) nY = match.getY() + random.randint(10, nH) location = Location(nX, nY) print("Location at: ", location) click(location) sleep(2) def checkIfExist(Pattern): if exists(Pattern): match = find(Pattern) print match nW = match.getW() - 10 nH = match.getH() - 10 nX = match.getX() + random.randint(10, nW) nY = match.getY() + random.randint(10, nH) location = Location(nX, nY) print("Location at: ", location) click(location) sleep(2) def randomClick(position): nW = position.getW() - 10 nH = position.getH() - 10 nX = position.getX() + random.randint(10, nW) nY = position.getY() + random.randint(10, nH) location = Location(nX, nY) print("Location at: ", location) click(location) sleep(2)
使用方法如下:
I.) 開一個新的檔案, 貼上腳本, 另存為你喜歡的名稱 (例如: myFunction)
II.) 參照"加入自定義的腳本", 如下所示: (加入ImportPath, 請記得重新啟動 SikuliX)
# Include it myScriptPath = "C:\\Users\\Uorol\\Documents\\myFunction.sikuli" addImportPath(myScriptPath) from sikuli import myFunction # Use it myFunction.findAndClick("Picture")