Android自動化測試-從入門到入門(4)uiautomatorviewer

咱們用以下一行代碼來回顧一下以前介紹過的內容:android

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;

onView(allOf(withId(id), isDisplayed())).perform(click()).check(matches(withText(text)));

還記得以上代碼的意義麼?這行代碼找到了屏幕上正在顯示的指定id的控件,對其進行了一次點擊操做,而後檢查了一下其文本爲textsegmentfault

關於onView()方法,咱們須要首先知道目標控件的一些屬性值,而後再圍繞咱們的目標屬性構建一個匹配規則。但有些時候,控件的屬性並非那麼明顯,或者並無那麼容易獲取到,這時,咱們可使用Android提供的uiautomatorviewer工具幫助咱們進行分析。框架

uiautomatorviewer

uiautomatorviewer工具位於Android SDK目錄下,本文會介紹在Mac下uiautomatorviewer的用法,其餘系統下的用法至關雷同,就不一一介紹了。工具

在終端中切換到Android SDK的目錄下,在tools目錄下能夠看到uiautomatorviewer工具:測試

clipboard.png

運行./uiautomatorviewer,即可以看到uiautomatorviewer的主界面了:ui

clipboard.png

很樸素對不對~spa

屏幕截圖

將手機鏈接到設備上,在手機上啓動一個須要測試的目標頁面,而後點擊uiautomatorviewer左上角的第二個按鈕(Device Screenshot(uiautomator dump)),即可以把當前頁面截下來了:rest

clipboard.png

如上所示,我截取了一張答疑君APP登陸頁面的截圖。能夠看到,uiautomatorviewer的界面分紅了3個部分:code

  • 左邊部分:顯示當前屏幕的截圖。在這個部分,咱們能夠對這個頁面上的各個控件作一些選中的操做。orm

  • 右上角部分:顯示當前頁面的View層級。

  • 右下角部分:顯示當前選中控件的各個屬性。

好比說,我如今想要作一個登陸的測試用例,我須要在「帳號」和「密碼」 的輸入框中輸入一些內容,而後點擊「登陸」按鈕執行登陸。首先,我選中填寫帳號的EditText

clipboard.png

你們能夠看到,右上角的View層級自動定位到了我選中的EditText上,同時右下角顯示了這個EditText的一些屬性信息。其中,resource-id即是這個EditTextid,因而我經過:

onView(withId(R.id.login_account))

便找到了這個EditText。而後,向這個EditText中輸入帳號信息:

onView(withId(R.id.login_account)).perform(click(), replaceText("..."), closeSoftKeyboard())

就完成了一個表單的輸入。

相似地,咱們還能夠經過text的屬性來尋找咱們的目標控件。咱們能夠根據屬性區域顯示的text來進行匹配:

onView(withText("帳號"))

小總結

Android所提供的uiautomatorviewer界面簡單,使用方便,對於咱們的自動化測試來講是一個很好的輔助工具。對於咱們以後將要介紹的UI Automator,以及第三方測試框架Appium,都離不開這個小工具的支持。因而,請你們趕快操練起來吧~

附錄

Android自動化測試-從入門到入門(1) Hello Testing!
Android自動化測試-從入門到入門(2) Testing APIs
Android自動化測試-從入門到入門(3) Espresso入門
Android自動化測試-從入門到入門(4) uiautomatorviewer
Android自動化測試-從入門到入門(5) AdapterView的測試
Android自動化測試-從入門到入門(6) 會玩的Espresso
Android自動化測試-從入門到入門(7) UI Automator

相關文章
相關標籤/搜索