桌面自動化測試工具:sikuli

jopen 10年前發布 | 50K 次閱讀 sikuli 測試工具

一 簡介

Sikuli在墨西哥惠慈爾土著人的語言中這是"上帝之眼"的意思,是一個利用圖片進行可視化檢索和自動化圖形界面的技術。貼個示例程序,就很容易明白了:

桌面自動化測試工具:sikuli

也就是說,用戶不需要寫出一行行代碼,而是用屏幕截圖的方式,用截出來的圖形元素組合出神奇的程序。Sikuli作為一個代理,就像人看著屏幕,遇到指定的圖像后使用鼠標和鍵盤進行操作。

目前sikuli還未廣泛使用,自身也有些bug未解決,但是已經有一些手機測試自動化使用它。我覺得sikuliGUI環境自動化方面還是大有可為的。

安裝

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,ScrollLockPause鍵,支持所有鍵盤鍵。

       觀察屏幕的方法,我除了 onChange方法,其他方法均有使用。

1waitPSseconds

定義:在給定的時間(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~z1~10

注意:當需要同時按下多個鍵時,特殊鍵和普通鍵之間使用“+”連接。如type(“hello”+Key.ENTER). 如要同時使用修飾鍵,使用“,”連接,如typeKey.F4,KEY_ALT

注意事項

1.sikuli不支持中文,因此無論在編程中或者保存路徑,都不可以使用中文!否則運行報錯。

2.圖像因素:盡量避免比較大的目標,因為大目標必然需要比較大量像素,準確性和速度都有下降。盡量選擇可以唯一確定的圖像因素。

3.使用變量保存需多次使用的圖像,Sikuli會將所有圖像都另存為圖片。

左圖和右圖作用一樣,但右圖的做法會在工作路徑保存兩個完全相同的圖像。

4.sikuli不可在遠程桌面編程,應該是它的bug,一截圖就死機。

5.虛擬機需要全屏,點擊位置才不會出錯。

Sikuli的類和方法在本篇文章內未能一一列舉,比如findgetOSopenAppgetClippboard等方法,EnvFinderLocationRegionVDict等類,大家有興趣可以研究一下。

來自:http://www.ltesting.net/html/32/209032-194697.html

</span></span></span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!