咱们用以下一行代码来回顾一下以前介绍过的内容: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