透過 Sikuli + Mobizen 來做 Android 自動化測試

在做 UI 自動化測試時都會抓取某元件的 text、content-desc、index 等資料來抓取某個元件後再對此元件做操作,但有時候某些元件可能沒有這些明確的資料,在實作上確實不好處理,如下圖所示,這是 Android 手機圖形解鎖。

2144

我透過 UI Automator Viewer 工具要來查看這九個點的屬性值,但很可惜這九個點都無法被定位出來,只能定位到一個辨識區域,此區域的 content-desc 屬性為圖形區域。

這時我們要透過 UI Automator 自動化測試來執行這些操作就相當複雜,且還要再做長按拖拉的操作方式來解鎖。

其實我們可以透過 Sikuli 的圖形辨識很快的完成這樣的操作。

一開始我們可以先安裝 Mobizen 這套軟體在手機端與電腦端,安裝流程可參考 Mobizen 安裝教學,安裝完後我們就可以把手機的畫面傳送到電腦端顯示,同時電腦端也可以透過滑鼠來遙控連接的手機。

安裝完 Mobizen 後,接著我們就可以透過 Sikuli 來幫我們做手機圖形解鎖的操作,下圖是我們要解鎖的圖形:

Capture_20140727_165234

以下是使用 Sikuli 寫的解鎖程式碼:

擷取22

我們在辨識是識別整個九的點的方塊區域,所以當我們要透過 mouseMove() 值所值定的圖片必須調整它的偏移值,偏移值的設定可以參考: UI 自動化測試使用 Sikuli 操作介紹 Part 5 – 調整點選目標元件的位置偏移,還有要調整圖片辨識的相似度,上面程式設定為 95 %,因為如果沒調高執行上很容易就辨識失敗。

接著我們在解鎖過程中必須長按拖拉來畫出圖形,所以在第 4 行程式碼會做 mouseDown(Button.LEFT) 長按滑鼠左鍵的動作,接著移動滑鼠到我們要的解鎖位置,完成後放開滑鼠左鍵來完成解鎖,如第 12 行程式碼所示。

大家可能會很好奇為什麼我會在第 3 行程式碼 Settings.MoveMouseDelay = 2,這一行是在調整 Sikuli 執行移動滑鼠的 Delay 時間,時間單位為秒,預設值為 0.5。

會增加移動滑鼠的 Delay 時間原因在於,在電腦端透 Mobizen 來操作手機會有一點點的時間差,如果沒有沒時間加長,很容易就跟不太上操作而失敗。

執行過程影片:

程式碼 github 網址: https://github.com/Mark-Chang-KKBOX/sikuli-android-unlock

 

廣告

2 thoughts on “透過 Sikuli + Mobizen 來做 Android 自動化測試

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s