一、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 |
childPattern | UiSelector从子元素中的选择条件 |
text、instance | 从搜索出的元素中再次用 描述/文本/实例 条件搜索元素 |
返回值: | UiObject |
抛出异常: | UiObjectNotFoundException |
API设计、
例如:
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查找条件递归查找所有符合条件的子子孙孙集合的数量
uicollectionview?
参数 | 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);}