UiAutomator(4)--UiCollection API

一、UiCollection介绍

       UiCollection是UiObject的子类,代表元素条目集合。

        UiCollection功能说明:

        1.先按照一定的条件枚举出容器类界面所有符合条件的子元素

        2.再从符合条件的元素再次通过一定的条件最终定位需要的组件

        UiCollection使用场景

        1.一般使用容器类组件作为父类

        2.一般使用在需要找子类且子类由于某些因素不好定位

        3.获取某一类的数量,如获取联系人列表下当视图下联系人的数量


二、API使用

        1.使用文本与描述条件从集合中查找对象API

            (1)public UiObject getChildByDescription (UiSeletor childPattern,String text)

            (2)public UiObject getChildByText (UiSeletor childPattern,String text)

            (3)public UiObject getChildByInstance (UiSelector childpattern,int instance)

               在UiSelector选择器的查找条件中从子ui元素中搜索,递归寻找所有符合条件的子集。再次用 描述/文本/实例 条件从前面搜索子集定位到想要的元素。

               childPattern:UiSelector 从子元素中的选择条件

               text、instance从搜索元素总再次用 描述/文本/实例条件搜索元素

         

         2.获取某种搜索条件组件的数量API 

            (1)public int getChildCount (UiSelector childpattern)

                按照UiSeletor查找条件递归查找所有符合条件的子子孙孙集合的数量

                参数:childPattern,选择条件

                返回值:int,符合条件的子子孙孙集合数量


三、实例

        

package cn.microinvestment.weitou;


import java.io.IOException;


import com.android.uiautomator.core.UiCollection;

import com.android.uiautomator.core.UiObject;

import com.android.uiautomator.core.UiObjectNotFoundException;

import com.android.uiautomator.core.UiSelector;

import com.android.uiautomator.testrunner.UiAutomatorTestCase;


public class UiCollectionDemo extends UiAutomatorTestCase {


public static void main(String[] args) throws IOException {

Runtime.getRuntime().exec("adb shell am start -n "

+ "cn.microinvestment.weitou/cn.microinvestment.weitou.activity.WTLoginControllerActivity");

new UiAutomatorHelper("uicollection", "cn.microinvestment.weitou.UiCollectionDemo", "test", "4");


}

public static void test() throws UiObjectNotFoundException{

//选择一个内容为abc的观点点击

UiCollection collection=new UiCollection(new UiSelector().className("android.widget.RelativeLayout"));

UiSelector childPattern=new UiSelector().className("android.widget.TextView");

String text="abc";

UiObject abc=collection.getChildByText(childPattern, text);  

abc.clickAndWaitForNewWindow();

}


}