桌面自動化測試工具:sikuli
一 簡介
Sikuli在墨西哥惠慈爾土著人的語言中這是"上帝之眼"的意思,是一個利用圖片進行可視化檢索和自動化圖形界面的技術。貼個示例程序,就很容易明白了:
也就是說,用戶不需要寫出一行行代碼,而是用屏幕截圖的方式,用截出來的圖形元素組合出神奇的程序。Sikuli作為一個代理,就像人看著屏幕,遇到指定的圖像后使用鼠標和鍵盤進行操作。
目前sikuli還未廣泛使用,自身也有些bug未解決,但是已經有一些手機測試自動化使用它。我覺得sikuli在GUI環境自動化方面還是大有可為的。
二 安裝
Sikuli的安裝很簡單,首先安裝最新版java runtime,然后在 http://groups.csail.mit.edu/ uid/sikuli /download.shtml下載Sikuli IDE安裝就可以了。Sikuli的編程語言為python,用戶按照python編程習慣就可以了。
三 函數介紹
在觀察屏幕方面,目前支持4種方法。wait(在指定時間內等待某圖像出現),waitVanish(在指定時間內等待某圖像消失),onAppear(當某圖像出現,做相應動作),onChange(有變化后做相應動作).在動作方面,Sikuli可以完成大多數的鼠標和鍵盤操作,click(左鍵單擊),doubleClick(雙擊),rightClick(右鍵單擊),hover(鼠標懸停),dragDrop(拖拽),keyDown(鍵盤按下),keyUp(鍵盤彈起),type(鍵盤輸入),paste(粘貼)等等。除了PrintScreen,ScrollLock和Pause鍵,支持所有鍵盤鍵。
觀察屏幕的方法,我除了 onChange方法,其他方法均有使用。
(1)wait(PS,seconds)
定義:在給定的時間(seconds)內等待指定圖像(PS).時間以秒為單位,可以使用FOREVER永久等待。
示例:
在啟動操作系統后,需要等待一段時間,桌面圖標才會出現。
(2</span>)waitVanish(PS,seconds)</span></span></p>
定義:在給定時間(seconds)內等待指定圖像(PS)消失。時間以秒為單位,可以使用FOREVER永久等待。
示例:在卡巴升級過程中,需等待升級的圖標消失,才能繼續下面的操作。
(3</span>)onAppear</span>(PS</span>,handler</span>)</span></p>
定義:當指定圖像出現(PS),觸發事件,交由相關事件處理器(handler)處理。
示例:啟動VMware后,觀察10秒,當啟動圖標出現后,點擊啟動圖標。
鼠標操作的方法,定義都大同小異,僅以click為例做概要介紹。
(1)click(PS)
定義:在指定圖像上,鼠標左鍵點擊一下。
示例:虛擬機關機時,需要點擊關機按鈕。
鍵盤操作方法不多做介紹了,重點介紹一下各種鍵的名稱和使用。</span></p>
(1)修飾鍵常量
KEY_ALT, KEY_CMD, KEY_CTRL, KEY_META, KEY_SHIFT, KEY_WIN
(2) 特殊鍵
Key.ALT, Key.BACKSPACE, Key.DOWN, Key.END, Key.ENTER, Key.ESC, Key.DELETE, Key.F1 ~ Key.F15, Key.HOME, Key.INSERT, Key.LEFT, Key.PAGE_DOWN, Key.PAGE_UP, Key.RIGHT, Key.TAB, Key.UP
(3)普通鍵
A~Z, a~z,1~10
注意:當需要同時按下多個鍵時,特殊鍵和普通鍵之間使用“+”連接。如type(“hello”+Key.ENTER). 如要同時使用修飾鍵,使用“,”連接,如type(Key.F4,KEY_ALT)
四 注意事項
1.sikuli不支持中文,因此無論在編程中或者保存路徑,都不可以使用中文!否則運行報錯。
2.圖像因素:盡量避免比較大的目標,因為大目標必然需要比較大量像素,準確性和速度都有下降。盡量選擇可以唯一確定的圖像因素。
3.使用變量保存需多次使用的圖像,Sikuli會將所有圖像都另存為圖片。
左圖和右圖作用一樣,但右圖的做法會在工作路徑保存兩個完全相同的圖像。
4.sikuli不可在遠程桌面編程,應該是它的bug,一截圖就死機。
5.虛擬機需要全屏,點擊位置才不會出錯。
Sikuli的類和方法在本篇文章內未能一一列舉,比如find,getOS,openApp,getClippboard等方法,Env,Finder,Location,Region,VDict等類,大家有興趣可以研究一下。
來自:http://www.ltesting.net/html/32/209032-194697.html