七、UiCollection API 详细介绍

一、UiCollection类介绍

  • UiCollection类两大功能:从集合中查找对象;获取某种搜索条件组件的数量
1.UiCollection类说明

1)UiCollection是UiObject的子类,可以使用UiObject中的所有API
2)UiCollection代表元素条目组合

2.UiCollection功能说明

1)先按照一定的条件枚举出容器类界面所有符合条件的子元素
2)符合条件的元素中再次通过一定的条件最终定位需要的组件

3.UiCollection使用场景

1)一般使用容器类组件作为父类
2)一般使用在需要找子类且子类由于某些因素不好定位的情况
3)获取某一类的数量,如获取联系人列表下当前视图下联系人的数量

 

二、从集合中查找对象

 
1.相关API说明
复制代码
public UiObject getChildByDescription(UiSelector childPattern,String text)

public UiObject getChildByText(UiSelector childPattern,String text)

public UiObject getChildByInstance(UiSelector childPattern,int instance)

在UiSelector选择器的查找里条件从子ui元素中搜索,递归寻找早所有符合条件的子集。

再次用 描述/文本/实例 条件从前面搜索子集定位到想要的元素
复制代码
 
2.参数:

 

Tables

Are

childPatternUiSelector从子元素中的选择条件
text、instance从搜索出的元素中再次用 描述/文本/实例 条件搜索元素
返回值:UiObject
抛出异常:UiObjectNotFoundException

 

  • 例如:
复制代码
public void testDemo1() throws UiObjectNotFoundException{

    //getChildByText()[界面停留在文件管理器界面]
    //1.通过类名获取所有组件的集合
    UiCollection collection=new UiCollection(new UiSelector().className("android.widget.ListView"));
    //2.通过类名对步骤1中的集合进行删选
    UiSelector childPattern=new UiSelector().className("android.widget.TextView");
    //3.通过text最终选中music文件
    String text="Music";
    UiObject music=collection.getChildByText(childPattern, text);
    //4.点击music按钮
    music.click();


    //getChildByDescription()[界面停留在拨号界面]
    //1.通过resourceId找出所有的组件集合
    UiCollection collection1=new UiCollection(new UiSelector().resourceId("com.android.dialer:id/dialpad"));
    //2.通过类名筛选步骤1集合中的组件
    UiSelector childPattern=new UiSelector().className("android.widget.ImageButton");
    //3.通过text最终定位到要选的组件
    String text="四";
    UiObject forth=collection1.getChildByDescription(childPattern, text);
    //4.点击
    forth.click();


    //getChildByInstance()[界面停留在拨号界面]
    //1.通过resourceId找出所有的组件集合
    UiCollection collection1=new UiCollection(new UiSelector().resourceId("com.android.dialer:id/dialpad"));
    //2.通过类名筛选步骤1集合中的组件
    UiSelector childPattern=new UiSelector().className("android.widget.ImageButton");
    //3.通过instance最终定位需要使用的组件(以10086为例子)
    UiObject child1=collection1.getChildByInstance(childPattern, 0);
    UiObject child0=collection1.getChildByInstance(childPattern, 10);
    UiObject child01=collection1.getChildByInstance(childPattern, 10);
    UiObject child8=collection1.getChildByInstance(childPattern, 7);
    UiObject child6=collection1.getChildByInstance(childPattern, 5);
    //4.点击
    child1.click();
    child0.click();
    child01.click();
    child8.click();
    child6.click();
}
复制代码

 

三、获取某种搜索条件组件的数量

 

1.相关API说明

 

public int getChildCount(UiSelector childPattern)
按照UiSelector查找条件递归查找所有符合条件的子子孙孙集合的数量

 

参数

childPattern

选择条件

返回值int符合条件的子子孙孙集合数量
  • 例如:
复制代码
public void testDemo2() throws UiObjectNotFoundException{

        //例一:int getChildCount()[界面停留在拨号界面]
        //1.搜索UiAutomatorView界面上最顶端的那个组件(界面上第一个index为0的就是)
        UiCollection collection=new UiCollection(new UiSelector().index(0));
        //2.假设要找所有ImageButtom数量
        int count=collection.getChildCount(new UiSelector().className("android.widget.ImageButton"));
        //3.将结果输出
        System.out.println("ImageButton conut is : "+count);



        //例二:如果tebleCollection.getChildCount()括号内不添加参数只找他的直接子类个数
        //1.搜索类名为android.widget.TableRow的组件集合
        UiCollection tebleCollection=new UiCollection(new UiSelector().className("android.widget.TableRow"));
        //2.返回直接子类个数(直接子类是指当前子类下面的组件不返回)
        int tebleChildCount=tebleCollection.getChildCount();
        //3.输出直接子类个数
        System.out.println("Android.widget.TableRow : "+tebleChildCount);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值