Sikuli:創新的圖形化編程技術(2)

發表于:2013-09-04來源:IBM作者:朱 杉點擊數: 標簽:Sikuli
實例一 Excel 中驗證鼠標懸停時的單元格注釋顯示 在通常的 GUI 自動化測試中,要完成這一驗證,需要編寫代碼以定位控件、模擬鼠標事件、捕獲對象、判

  實例一 Excel 中驗證鼠標懸停時的單元格注釋顯示

  在通常的 GUI 自動化測試中,要完成這一驗證,需要編寫代碼以定位控件、模擬鼠標事件、捕獲對象、判斷顯示結果,實現起來并不輕松。而使用 Sikuli,僅使用下列的簡短腳本即可完成這一任務。

  圖 3. 顯示并驗證單元格注釋

圖 3. 顯示并驗證單元格注釋

  圖 3 中所示腳本片段中,從 15-19 行完成了打開 Excel 并創建單元格注釋的過程。單元格注釋的顯示觸發和顯示驗證僅占用了 22-24 三行代碼。所調用的 hover() 方法從當前屏幕顯示上自動匹配截圖參數所示區域,獲取其位置,將鼠標指針懸停于該矩形區域的中心位置,激活注釋顯示。而在 Sikuli“視覺”能力的支持下,驗證注釋是否正確顯示只需用 verifyResult() 方法“一瞥”即可。該方法的實現如圖 4 所示,調用 exists() 方法,即能判斷當前屏幕中是否顯示有相應注釋。

  圖 4. verifyResult() 方法的實現

圖 4. verifyResult() 方法的實現

  類似的應用還有控件注釋信息的彈出及校驗、Web 應用中懸停效果的校驗等。

  實例二 Web 頁面中的多對象選擇

  本例中,實現了對 Web 頁面中多個對象的間隔選取和批量框選。其腳本片段如圖 5 所示。

  圖 5. Web 頁面中的多對象選取

圖 5. Web 頁面中的多對象選取

  該腳本以頁面中 12 個數字對象的截圖創建帶選擇對象數組,在 result_list 中列出了期望的選取結果顯示。運行時使用 openWeb() 方法自動打開瀏覽器,進入指定頁面。調用 selectObjs() 與 selectRange() 方法的實現 3 種不同的多選方式。腳本中自定義方法的實現,如圖 6 所示。

  圖 6. 自定義方法的實現

圖 6. 自定義方法的實現

  selectObjs() 方法中調用 Sikuli 的 click() 方法,以傳入的對象截圖列表和 Sikuli 定義的 Key Modifier 為參數,實現了按下 Ctrl 鍵后逐個點擊對象完成多選的動作。

  SelectRange() 方法則實現了區域性選取。以 obj_from 和 obj_to 參數指定選區的起始位置和結束位置;或僅使用 obj_from 指定起始位置,同時設定水平和垂直方向的偏移量 x、y 來指定選區。調用 dragDrop() 方法,傳入起始、結束位置,即可完成區域選擇。

  驗證方式同實例一所述。

  實例三 Web 頁面中的對象拖拽移位

  本例主要應用 Sikuli 的 dragDrop() 方法,實現對象的拖拽移位操作。圖 7 中代碼所完成的任務即為通過拖拽的方式,將指定的圖片移動到 Trash 區域中。

  圖 7. 拖拽圖片至 Trash 區域

圖 7. 拖拽圖片至 Trash 區域

  該腳本中,在 droppable 數組中定義需要被移入 Trash 的圖片,以 Trash 區域的標題欄為搜索目標,用 find() 方法獲得 Trash 區域的 Match 類型對象,作為目標區域參數傳入 moveTo() 方法。其中 moveTo() 方法查找當前屏幕顯示中所有與 obj 參數所傳入的圖形相匹配的對象,將其拖拽至 des 所指定的區域。其實現如圖 8 所示。

  圖 8. moveTo() 方法的實現

圖 8. moveTo() 方法的實現

  在該方法中,對于圖片縮略圖應用 exists() 方法進行檢索時,進行了圖像相似度(取值區間為 0~1)的調整,Sikuli 中缺省情況下的相似度設置為 0.7,為了在圖片內容類似的情況下進行正確的區分,可用到 similar() 方法適當提高檢索時的相似度,以避免匹配到其他類似區域。

  若需確認當前相似度設置下,圖像的匹配情況,可在腳本中單擊截圖對象,激活 Pattern Settings 對話框。在本例中,如單擊第 25 行 droppable 中的第二張截圖,則彈出對話框如圖 9 所示。圖中(1)中所標識區域中,有兩幅圖片分別被紅色和紫紅色高亮顯示。表示在當前的相似度下,這兩幅圖片均被識別為要尋找的對象。顏色越偏紅,則圖片與截圖的相似度越高,越近似紫色則相似程度越低。調節(2)所標示的 Similarity 滑塊,改變相似度設置,則可看到預覽區域中的匹配區域的數量及顏色變化,從而以此為依據選擇適當的相似度設置,使得程序可以精準唯一地定位目標區域。

  圖 9. Pattern Settings 對話框

圖 9. Pattern Settings 對話框

  回頁首

  Sikuli 的優勢及局限

  Sikuli 為腳本賦予了人類的視角,讓計算機不單能夠去捕捉后臺的接口數據和返回值,而且能如同人眼一般,“看”到一個真實的 GUI 展現。使用者直接在腳本中引用目標 GUI 元素的截圖來獲取該對象,并指定對其所進行的操作,簡單高效。使得 GUI 自動化擺脫了對應用的內部程序實現的依賴,無需獲取 API,亦無須了解 GUI 的內部代碼實現;忽略了標準控件和非標準控件在操作和獲取上的差異性;普遍適用于所有運行在有圖形用戶界面的操作系統之上的應用,有 GUI 顯示的地方即可被獲取和操作。實時的圖形檢索定位,避免了位移和 UI 重排等位置變化造成的無法準確定位并獲取控件的問題。Python 語法兼容 +Java 內核,為其賦予了很強的擴展性,同時,Open Source 也讓 Sikuli 本身獲得了更多的發展機會和空間。使用 GUI 元素截圖所編制的 Sikuli 腳本具有良好的代碼可讀性,這一點從上述實例場景中能夠有所體會——在這種簡短的腳本中,已基本接近自然語言的表述方式。這樣的一種展現形式和特性使得手工測試用例與自動化測試腳本的距離大大縮小,使得這兩者之間的自動轉化和整合成為可能。

原文轉自:http://www.ibm.com/developerworks/cn/opensource/os-cn-sikuli/

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97