圖形腳本語言sikuli
簡介
Sikuli 是一種新穎的圖形腳本語言,或者說是一種另類的自動化測試技術。它與我們常用的自動化測試技術(工具)有很大的區別。
當你看到上圖sikuli的腳本時,一定會驚呼,這樣都可以~!腳本加截圖~~~
OK ,在驚訝過后,我們一起來大體的了解一下這個技術。
什么是Sikuli?
Sikuli腳本自動化,你在屏幕上看到的任何東西。它使用圖像識別,識別和控制GUI組件。這是有用的,當有一個GUI的內部或源代碼的訪問是不容易的。
Sikuli(在墨西哥維喬印第安人的語言里是”上帝之眼”的意思)是由美國麻省理工學院開發的一種最新編程技術,使得編程人員可以使用截圖替代代碼,從而簡化代碼的編寫流程。從它研究方向上看,是一種編程技術,但是該技術還可以用于進行大規模的程序測試,腳本程序編寫使用的是python語言。
誰正在開發的Sikuli腳本?
Sikuli是一個開放源碼的最初的用戶界面設計組織 在麻省理工學院的研究項目 。現在是保持并進一步 協調與開源社區開發的Sikuli實驗室在美國科羅拉多州博爾德大學。這是支持的,部分由國家科學基金會獎IIS-0447800,廣達電腦的一部分的TParty項目。Sikuli 的MIT許可證下發布的 。
好吧~!你覺得谷歌瀏覽器翻譯的太爛(但對我這種E文件菜鳥來說知道意思就行),那么可以去官網看英文介紹:
http://www.sikuli.org/
Sikuli 可以采用Python 來做為腳本語言, 當然,你如果熟悉Python 的話,相信你對sikuli 的上手非常快。當然,你也可以使用sikuli的java API 使其在java 環境下運行。
下載安裝
是否有興趣與俺一起體驗一下呢?
來下載頁面看看http://www.sikuli.org/download.html
好吧~!這貨已經發生了不小的改變,去年玩的時候還是“單純”的一下小軟件。現在好像要求變多了。
Sikuli 告訴我們目前只有32位的版本,不過這個版本應該也可以運行在32位與64的windows系統下。但是,是有前提條件地:
1、請確保你已經安裝java 6 JRE 32位版本(如果是java 7 或者是64位JRE 那是不被支持的)
2、請確定你已經卸載的先前的sikuli版本(尤其是0.10.x版本)
3、請確保在你安裝 JRE 或 卸載舊版本的sikuli 后已經重新啟動了系統。
安裝步驟:
一、就在上面提供的下載頁面,點擊“ Sikuli X-1.0rc3(R905)-win32.exe”下載安裝。程序很小,比起QTP 等工具,就可以直接忽視了。
我的安裝路徑:I:\Program Files (x86)\Sikuli X
二、 安裝完成后先不在不要運行,輸因為他還有點小毛病,我們需要在下載頁面找到“Sikuli X R930 ”連接,把這個zip類型的文件下載下來。
三、 我們將下載的文件sikuli-r930-win32.zip解壓,然后得到一個SIKULI-IDE 的目錄,把SIKULI-IDE目錄下的所有文件替換Sikuli X下的所有文件。(這種做法有點2了!)做這一步的目的是r930關聯文件修復了了最近的bug ,所以替換r905(有問題版本)文件關聯。希望官方進快對下載版本修復,在你看到這篇文章再去下載安裝時不用這么麻煩了。
界面介紹
上面已經安裝完成,下面運行起來看看長相如何。
(注意窗口標題欄顯示為“sikuli -r930”說明我們用的是替換版本)
菜單欄與工具欄非常簡單,下面介紹一下這幾個按鈕是干嘛用的
屏幕截圖(Take screenshot):點擊該按鈕,進入屏幕截圖狀態,拖拽輔助線選取需要截取的界面元素,釋放鼠標左鍵的同時,自動將該截圖插入到編輯區中光標當前位置。使用快捷鍵 Ctrl+Shift+2(Command+Shift+2)也可激活截圖狀態,以完成對于彈出菜單、下拉框一類的控件的實時截圖。該快捷鍵亦可通過主菜單 File->Preferences 進行自定義。
插入圖片(Insert image):除直接截圖外,用戶也可通過點擊該按鈕導入已有的 PNG 格式圖片文件。
建立屏幕區域(Create region):點擊該按鈕,進入屏幕區域選擇狀態,拖拽定位十字線選取屏幕區域。釋放鼠標左鍵,即可將當前選中區域的屏幕坐標信息插入到編輯區中。
運行(Run):點擊執行當前腳本。快捷鍵為 Ctrl+R(Command+R)。
慢速運行(Run in slow motion):點擊后以較慢的速度執行當前腳本,以紅色圓形外框顯式標識每一次圖像查找定位動作,便于程序調試中進行焦點追蹤。快捷鍵為 Ctrl+Alt+R(Command+Alt+R)。
左側側邊欄中分類列出了部分常用函數,點擊函數名可快速將其插入到編輯區,若該函數需截圖作為參數,則自動轉入屏幕截圖狀態。下方的狀態欄可用于查看當前行號,與行首 Tab 縮進的層級 ( 列號 )。
右邊區域上半部分為腳本編輯區域,我們的自測化測試腳本就是在這個區域編寫完成。
下半部分為提示信息,不管運行成功與失敗,都會給出相應的提示信息
小例子
大體上了解sikuli 的界面,下面來做一個自動化的小例子。(官方的第一個小例子為開始運行里輸入hello world )這里為打開360極速瀏覽器(默認為百度首頁),搜索框里輸入sikuli ,然后點擊“百度一下”按鈕搜索。
第一步、點擊桌面360極速瀏覽器圖標。
方法一,輸入雙擊函數doubleClick(),然后通過截圖工具對桌面圖標截圖,輸入。
方法二很快捷,點擊窗口左側雙擊函數doubleClick(),直接進入截圖狀態。截圖完成后直接添加函數到腳本編輯區域。
第二步,我們依然用第二種快捷的方式,點擊左側type(圖標,text) 函數,這次截取的對象為百度首頁的輸入框。
因為,默認定位的焦點為圖片的中心,我們要輸入的位置在輸入框的左側,所以需要對焦點進行調整。直拉點擊截圖的輸入框圖片。
當然,在這個窗口中,我們也可調整圖片的匹配度,匹配度越低容錯能力越強。這里來簡單解釋一下:
大家知道ie7 與 ie8 的圖標雖然相似,但還是有所差別的。為了使腳本的移植性更強。比如本機是用IE7 錄制的腳本,移植到另一臺電腦上只有IE 8 ,因為精確度調低,腳本也會把IE8 當IE 7 來執行。當然有些情況下調低并不好,比如桌面上有兩個圖標非常相識,那么精確度調整的很低,那么腳本就無法辨認誰是誰了。
第三步、這一步與第一步一樣,不過這里要使用的函數是單擊函數click() ,點擊“百度一下”按鈕。
下面完整腳本:
運行一下吧這個小腳本吧!成就感就此而生,這是你對這種技術產生興趣的動力。。
優缺點
了解一下這個工具的優缺點會讓你更正確的使用這個工具
優點
1、整體上sikuli小巧、便捷、容易上手。
2、sikuli腳本可以不經過API的編譯器直接自動化搜索到任何你能在屏幕上看到的東西
3、對各種程序都適合
4、不存在標準控件和非標準控件的問題
5、相對位置概念較小,要求不高(但是對象本身尺寸有影響)
6、一次編碼,多次運行(基于java的) 7、jython和java的支持,用編程的方式比較容易擴展
缺點
1、圖片的分辨率、色彩、尺寸、唯一性對程序的影響 (如果有兩個相同的,無法區分具體哪一個)
2、sikuli本身還不完善(處于開發、升級階段) 還有很多程序bug,能否繼續發展還是未知數
3、只認識當前活動的圖標(只有當前桌面有才行)
4、用例組織方面有提供但是目前有bug,還未調研嘗試便利性
5、截圖的話,腳本存儲占用空間較大
6、相似度調整需要手動一個個的調整,工作量大
7、ljw200901t和ljw200902t的區別(不太容易區別出來,可能需要調整到similarity=1.0才行,但這樣的話可移植性就差了)
8、目前還不適合設計成一種測試框架(有用例組織功能,但是目前有bug,暫時沒有用過)
9、測試報告的生成,直接用message的話比較弱,需要用jython編程實現可能會強大一些(還未調研)
posted on 2014-03-05 10:31 順其自然EVO 閱讀(540) 評論(2) 編輯 收藏 所屬分類: 測試學習專欄