咱們用以下一行代碼來回顧一下以前介紹過的內容: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
的控件,對其進行了一次點擊操做,而後檢查了一下其文本爲text
。segmentfault
關於onView()
方法,咱們須要首先知道目標控件的一些屬性值,而後再圍繞咱們的目標屬性構建一個匹配規則。但有些時候,控件的屬性並非那麼明顯,或者並無那麼容易獲取到,這時,咱們可使用Android
提供的uiautomatorviewer
工具幫助咱們進行分析。框架
uiautomatorviewer
工具位於Android SDK目錄下,本文會介紹在Mac下uiautomatorviewer
的用法,其餘系統下的用法至關雷同,就不一一介紹了。工具
在終端中切換到Android SDK的目錄下,在tools
目錄下能夠看到uiautomatorviewer
工具:測試
運行./uiautomatorviewer
,即可以看到uiautomatorviewer
的主界面了:ui
很樸素對不對~spa
將手機鏈接到設備上,在手機上啓動一個須要測試的目標頁面,而後點擊uiautomatorviewer
左上角的第二個按鈕(Device Screenshot(uiautomator dump)
),即可以把當前頁面截下來了:rest
如上所示,我截取了一張答疑君APP登陸頁面的截圖。能夠看到,uiautomatorviewer
的界面分紅了3個部分:code
左邊部分:顯示當前屏幕的截圖。在這個部分,咱們能夠對這個頁面上的各個控件作一些選中的操做。orm
右上角部分:顯示當前頁面的View層級。
右下角部分:顯示當前選中控件的各個屬性。
好比說,我如今想要作一個登陸的測試用例,我須要在「帳號」和「密碼」 的輸入框中輸入一些內容,而後點擊「登陸」按鈕執行登陸。首先,我選中填寫帳號的EditText
:
你們能夠看到,右上角的View
層級自動定位到了我選中的EditText
上,同時右下角顯示了這個EditText
的一些屬性信息。其中,resource-id
即是這個EditText
的id
,因而我經過:
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