2018年4月21日 星期六

[Sikuli] 簡單的GBF腳本 (一) 工欲善其事

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. 諸位應該都沒有安裝過, 直接點選"是"即可
    (有安裝過的記得先備份一下)
2.  點選第一個選項即可
第三個 Tesseract 是 1.1.2 新整合的一項 Open Source 的 OCR 功能,
有辨識文字需求的朋友可以安裝看看.
 3. Jyython的版本, 點選"是"可以安裝2.7版本
如果有遇到問題再回到這步選"否"安裝2.5.4
我自己是沒遇到啥問題....
4. 看到這步就安裝完成了~

2. 簡單的使用範例

1. 點擊 runsikulix之後就會打開 SikuliX 的 IDE

最左邊是一些快速選擇的指令, 當然 Sikuli 支援的指令遠遠不止於此


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")

1 則留言:

  1. 你好,我有想找人做一個 sikuli 的程式,模擬點擊。如果你有意願接案或長期配合請 email 給我。mmmayagan@gmail.com

    回覆刪除

不定參數印 log

From the UNIXProcess_md.c #ifdef DEBUG_PROCESS   /* Debugging process code is difficult; where to write debug output? */ static void deb...