Sikuli-X簡單的使用

Sikuli是識別和控制GUI組件進行UI自動化測試的技術,它是有MIT的研究人員開發進行設計的Sikuli在墨西哥維喬印第安人(Huichol Indians)的語言裏是上帝之眼的意思Sikuli的工作模式與人眼一樣,直接識別圖像。這個項目的主創人員之一是來自臺灣的張琮翔

Sikuli的最新版本爲Sikuli X-1.0rc2。在其官方網站下載區可獲得爲 Mac OS X、Windows 和 Linux 操作系統所提供的安裝文件及安裝方法簡介,

Sikuli需要JDK1.6版本支持。安裝好後,打開Sikuli-IDE ,如下圖所示,界面由主菜單欄、工具欄、方法欄、編輯區、日誌欄和狀態欄六部分組成


Sikuli提供的常用方法主要有查找、鼠標動作、鍵盤動作、事件觀測4種類型


查找主要是對判斷元素是否在頁面存在以及等待元素


鼠標動作主要是模擬鼠標的點擊、雙擊、右擊、移動、拖拽


鍵盤動作主要是模擬鍵盤的輸入和粘貼


事件觀測主要是元素出現、消失以及屏幕區域變化對程序的處理


用Sikuli-X做一個簡單的減法運算的用例,Sikuli-X使用的是Jython腳本語言,代碼如下

import os  #導入os包
command = 'taskkill /im calc.exe' #定義一個結束進程的命令字符串
#os.popen('calc.exe')   #python打開應用程序的方法
#openApp('calc.exe')    #Sikuli打開應用程序的方法

a = App.open("calc.exe")   #Sikuli打開應用程序的方法
   
wait("1481855580087.png")  #等待元素出現

click("1481855580087.png")  #點擊元素

wait("1481855635062.png")

click("1481855635062.png")

wait("1481855675892.png")

click("1481855675892.png")

wait("1481855716969.png")

click("1481855716969.png")

wait("1481855763519.png")

click("1481855763519.png")

wait("1481855820477.png")

click("1481855820477.png")

if exists("66.png"):   #斷言
    print "測試通過"
    a.close()    #Sikuli關閉應用程序的方法
    #os.popen(command)    #python關閉應用程序的方法
else:
    print "測試失敗"
    a.close()
    #os.popen(command)

運行試一下


運行的時候有點慢,是因爲是在整個屏幕上查找元素,可以使用,把查找元素的區域固定,使查找元素速度加快,當然也是有缺點的,程序如果改變區域就無法識別了,代碼如下

import os
command = 'taskkill /im calc.exe'
#os.popen('calc.exe')
#openApp('calc.exe')

a = App.open("calc.exe") 

Region(596,325,220,315).wait("1481855580087.png")

Region(596,325,220,315).click("1481855580087.png")

Region(596,325,220,315).wait("1481855635062.png")

Region(596,325,220,315).click("1481855635062.png")

Region(596,325,220,315).wait("1481855675892.png")

Region(596,325,220,315).click("1481855675892.png")

Region(596,325,220,315).wait("1481855716969.png")

Region(596,325,220,315).click("1481855716969.png")

Region(596,325,220,315).wait("1481855763519.png")

Region(596,325,220,315).click("1481855763519.png")

Region(596,325,220,315).wait("1481855820477.png")

Region(596,325,220,315).click("1481855820477.png")

if Region(596,325,220,315).exists("66.png"):
    print "測試通過"
    a.close()
    #os.popen(command)    
else:
    print "測試失敗"
    os.popen(command)


運行一下,比剛纔快了很多









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章