1. 程式人生 > >Appium移動自動化測試(五)--app控制元件獲取之uiautomatorviewer

Appium移動自動化測試(五)--app控制元件獲取之uiautomatorviewer

初探

在Android的SDk提供了以下的工具來支援我們進行UI自動化測試:

uiautomatorviewer:用來掃描和分析Android應用程式的UI控制元件的工具。

uiautomator:一個包含建立測試、執行自動化測試API的java庫。

要使用這些工具,你必須安裝Android開發工具以下版本:

Android SDK Tools:API 21 版本或者21以上版本;

Android SDK Platform:API 16 版本或者16以上版本.

分析控制元件

在你開始寫測試用例之前,使用uiautomatorviewer可以幫助你熟悉你的UI元件(包括檢視和控制元件)。

你可以使用它對當前連線到你電腦上的手機螢幕進行一個快照,然後可以看到手機當前頁面的層級關係和每個控制元件的屬性。利用這些資訊,你可以寫出針對特定UI控制元件的測試用例。

在 ..\sdk\tools\ 目錄下開啟 uiautomatorviewer.bat (開啟前請手機連線電腦,手機開啟USB除錯)。

 0

家看了上面的動態圖,基本上已經瞭解了一些用法了,再進一步說明一下: 
1、獲取快照:
當你要分析一個頁面時,首先將手機的頁面停留在你要分析的頁面,然後用資料線連線電腦。

然後點選uiautomatorviewer左上角的第二個圖示按鈕 Device Screenshot,點選之後會將當前手機介面的快照更新到這裡來。
2、頁面層級:


右上方的整個區域,就是當前頁面佈局的層級關係。如果對Android五大布局比較熟悉的話,理解這一層應該不是問題。

3、不可用區域:
右上方的整個區域中的第二個按鈕Toggle NAF Nodes,按下後出現的黃色區域代表,這些控制元件是不被Uiautomator工具識別,無法獲取到這些控制元件的例項。以QQ首頁為例。

0 (1)

我們可以看到,當按下該按鈕的時候,下方的三個tab出現黃色區域,這就代表這三個區域的控制元件,如果你想通過Uiautomator提供的API來獲得他們的屬性,或者對其進行點選操作,是做不到的,因為你沒辦法拿到這些控制元件的例項。

4、屬性詳情:
右下方的整個區域,是當前選中的頁面或者是控制元件的屬性資訊。這部分比較重要,我們以後寫程式碼的時候就是需要通過檢視屬性中的控制元件的id或者是text等來獲取控制元件的例項,然後點選操作它。
以QQ左上角的頭像控制元件為例:

image

點選左上角的頭像控制元件之後,右下方區域就會顯示這個控制元件的詳細資訊。比如這裡我們可以得知它的resource-id就是com.baidu.searchbox:id/baidu_searchbox。
然後利用Uiautomator的API方法就可以得到該控制元件的例項。

image

上面的方法就是知道了該控制元件的id之後,模擬向該控制元件輸入文字的過程,當然Uiautomator還提供了根據text來獲取控制元件。

這種點選的方法比起Monkeyrunner來說它的好處就是:Monkeyrunner是座標點選,當一個指令碼寫好後,換一個解析度的手機去執行,點選的位置可能就會出錯,而Uiautomator點選是先找到該控制元件,然後再點選該控制元件,因此可移植性比Monkeyrunner要好;另外程式碼的易讀性也更好一些。