一、背景
Android早期使用的框架是instrumentation。instrumentation偏底层,整体没有进行封装,使用难度较大,且instrumentation受制于app本身,要求与app保持同进程、同签名的情况下才能获取到app页面信息和控件信息.
uiautomator是Android引入的测试专用框架,在API 16上正式登场。
二、uiautomator的基本信息
uiautomator里的操作基本元素是UiObject,UiObject可以是屏幕上的控件,也可以是一些action,UiObject通过UiSelector进行选择。
三、UiSelector
顾名思义,这是ui控件的选择器,ui控件选择器提供了多种选择方式,常见的方式有resourceId、text、className等方式获取,基于上述信息,可以增加UiSelector的获取准确性。一般情况下,resourceId可以精确地获取到控件,基于text和className可能无法精确查找。
1、多个控件中查找某控件——instance
很多情况下,我们的控件没有resourceId,如一个简单的view,或者某几个view外层的LinearLayout,ListView中的某个item等,他们都不具备resourceId,这个时候只能通过text或者className的方式进行查找。这样查找到的控件有很多,需要通过使用instance()方法进行控件筛选。
注:instance是index方法的update版,目前已不推荐index方法
2、查找子控件——childSelector
3、查找同级别控件——fromParent
四、UiObject
参考文档:
https://www.jianshu.com/p/62dabd69a409
https://www.cnblogs.com/123blog/p/12594714.html
官方:https://developer.android.google.cn/training/testing/ui-automator#ui-automator-apis