初探
在Android的SDk提供了以下的工具來支持我們進行UI自動化測試:
uiautomatorviewer:用來掃描和分析Android應用程序的UI控件的工具。
uiautomator:一個包含創建測試、執行自動化測試API的java庫。
谷歌Uiautomator文檔:http://android.toolib.net/tools/help/uiautomator/index.html
要使用這些工具,你必須安裝Android開發工具以下版本:
Android SDK Tools:API 21 版本或者21以上版本;
Android SDK Platform:API 16 版本或者16以上版本.
分析控件
在你開始寫測試用例之前,使用uiautomatorviewer可以幫助你熟悉你的UI組件(包括視圖和控件)。
你可以使用它對當前連接到你電腦上的手機屏幕進行一個快照,然后可以看到手機當前頁面的層級關系和每個控件的屬性。利用這些信息,你可以寫出針對特定UI控件的測試用例。
在 ..\sdk\tools\ 目錄下打開 uiautomatorviewer.bat (打開前請手機連接電腦,手機開啟USB調試)。
家看了上面的動態圖,基本上已經了解了一些用法了,再進一步說明一下:
1、獲取快照:
當你要分析一個頁面時,首先將手機的頁面停留在你要分析的頁面,然后用數據線連接電腦。
然后點擊uiautomatorviewer左上角的第二個圖標按鈕 Device Screenshot,點擊之后會將當前手機界面的快照更新到這里來。
2、頁面層級:
右上方的整個區域,就是當前頁面布局的層級關系。如果對Android五大布局比較熟悉的話,理解這一層應該不是問題。
3、不可用區域:
右上方的整個區域中的第二個按鈕Toggle NAF Nodes,按下后出現的黃色區域代表,這些控件是不被Uiautomator工具識別,無法獲取到這些控件的實例。以QQ首頁為例。
我們可以看到,當按下該按鈕的時候,下方的三個tab出現黃色區域,這就代表這三個區域的控件,如果你想通過Uiautomator提供的API來獲得他們的屬性,或者對其進行點擊操作,是做不到的,因為你沒辦法拿到這些控件的實例。
4、屬性詳情:
右下方的整個區域,是當前選中的頁面或者是控件的屬性信息。這部分比較重要,我們以后寫代碼的時候就是需要通過查看屬性中的控件的id或者是text等來獲取控件的實例,然后點擊操作它。
以QQ左上角的頭像控件為例:
點擊左上角的頭像控件之后,右下方區域就會顯示這個控件的詳細信息。比如這里我們可以得知它的resource-id就是com.baidu.searchbox:id/baidu_searchbox。
然后利用Uiautomator的API方法就可以得到該控件的實例。
上面的方法就是知道了該控件的id之后,模擬向該控件輸入文本的過程,當然Uiautomator還提供了根據text來獲取控件。
這種點擊的方法比起Monkeyrunner來說它的好處就是:Monkeyrunner是坐標點擊,當一個腳本寫好后,換一個分辨率的手機去執行,點擊的位置可能就會出錯,而Uiautomator點擊是先找到該控件,然后再點擊該控件,因此可移植性比Monkeyrunner要好;另外代碼的易讀性也更好一些。