[UiAutomator] UiSelector中使用instance与index方法定位控件的区别_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > [UiAutomator] UiSelector中使用instance与index方法定位控件的区别

[UiAutomator] UiSelector中使用instance与index方法定位控件的区别

 2014/12/26 12:50:19  小V爱科技  程序员俱乐部  我要评论(0)
  • 摘要:在使用UiAutomator写测试用例时,最常用到的就是控件查找操作。在UiSelector中,有两个定位控件的方法,一个是instance,一个是index。那么这两个方法有什么区别呢?首先,我们看一下官方api说明:instance(intinstance):Setthesearchcriteriatomatchthewidgetbyitsinstancenumber.Theinstancevaluemustbe0orgreater,wherethefirstinstanceis0
  • 标签:方法 使用 区别 定位 CTO 控件 instance

在使用UiAutomator写测试用例时,最常用到的就是控件查找操作。

在UiSelector中,有两个定位控件的方法,一个是instance,一个是index。那么这两个方法有什么区别呢?

首先,我们看一下官方api说明:

instance(int instance):
Set the search criteria to match the widget by its instance number. The instance value must be 0 or greater, where the first instance is 0. For example, to simulate a user click on the third image that is enabled in a UI screen, you could specify a a search criteria where the instance is 2, the className(String) matches the image widget class, and enabled(boolean) is true. The code would look like this: new UiSelector().className("android.widget.ImageView") .enabled(true).instance(2);

index(int index):
Set the search criteria to match the widget by its node index in the layout hierarchy. The index value must be 0 or greater. Using the index can be unreliable and should only be used as a last resort for matching. Instead, consider using the instance(int) method.

也就是说instance方法会将界面上所有相同类型的控件按顺序取出来,放到一个集合里(暂且这么理解吧,不知道放哪里了,囧),然后按照控件在集合的角标把想要的控件取出来;而index则是通过该控件所在层级的节点角标将对应的控件取出来。

那么这两个方法到底是怎么使用的呢?看下面的例子

首先我们通过xml定义一个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="textview1"
        android:textSize="22sp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button1" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="textview2"
        android:textSize="22sp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="button2" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="textview3"
        android:textSize="22sp" />

</LinearLayout>

使用UiAutomatorViewer截出来的图是这样的:

image

按照说明,使用index方法获取TextView控件是这样的:

UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").index(0)); // textview1
UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").index(2));  // textview2
UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").index(4));  // textview3

哎,等等,尼玛!为啥我第一个方法取到的UiObject是“TestUI”,原来在我们的TitleBar上也有一个TextView控件,而它的节点角标也是0(见下图)。这是不是太坑爹了?先不要埋怨,人家api文档都说的很清楚了,这是一个不靠谱(unreliable)的方法,其他方法都不好使了才建议去尝试此方法。

image

下面把使用instance方法获取TextView控件的方法写出来:

UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").instance(0)); // TestUI
UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").instance(1)); // textview1
UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").instance(2));  // textview2
UiObject obj = new UiObject(new UiSelector().className("android.widget.TextView").instance(3));  // textview3

怎么样,使用instance方法就靠谱多了吧。

本次分享到此结束,欢迎大家与我一起交流。

============================2014-12-25 分割线===================

今天上网看博客,发现index方法还有一种用法,就是在UiObject.getChild()方法里使用。还是以上面的UI为例。

如果我们想要获取textview1对应的TextView控件,首先找到它的父控件LinearLayout,而LinearLayout又是FrameLayout的子控件(如下图)。

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" alt="" />

所以,获取textview1的代码大概是这样:

UiObject viewObj = new UiObject(new UiSelector().className("android.view.View")); // 获取View控件
UiObject flObj = viewObj.getChild(new UiSelector().index(1)); // 获取FrameLayout控件
UiObject llObj = flObj.getChild(new UiSelector().index(0)); // 获取LinearLayout控件
UiObject tv1Obj = llObj.getChild(new UiSelector().index(0)); // 获取textview1对应的TextView控件

怎么样?还是instance好用吧!

 

发表评论
用户名: 匿名