标签:
1)UiCollection是UiObject的子类,可以使用UiObject中的所有API
2)UiCollection代表元素条目组合
1)先按照一定的条件枚举出容器类界面所有符合条件的子元素
2)符合条件的元素中再次通过一定的条件最终定位需要的组件
1)一般使用容器类组件作为父类
2)一般使用在需要找子类且子类由于某些因素不好定位的情况
3)获取某一类的数量,如获取联系人列表下当前视图下联系人的数量
public UiObject getChildByDescription(UiSelector childPattern,String text) public UiObject getChildByText(UiSelector childPattern,String text) public UiObject getChildByInstance(UiSelector childPattern,int instance) 在UiSelector选择器的查找里条件从子ui元素中搜索,递归寻找早所有符合条件的子集。 再次用 描述/文本/实例 条件从前面搜索子集定位到想要的元素
Tables |
Are |
childPattern | UiSelector从子元素中的选择条件 |
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(); }
三、获取某种搜索条件组件的数量
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); }
标签:
原文地址:http://www.cnblogs.com/JianXu/p/5224891.html