- UiCollection 类介绍
(1)UiCollection类说明
UiCollection是 UiObject 的子类
UiCollection代表元素条目集合
(2)UiCollection功能说明
先按照一定的条件枚举出容器界面所有符合条件的子元素
再从符合条件的元素再次通过一定的条件最终定位需要的组件
(3)UiCollection使用场景
一般使用容器类组件作为父类
一般是用在需要找子类且子类由于某些因素不好定位
获取某一类的数量,如获取联系人列表下当前视图下联系人的数量 - 从集合中查找对象
(1)相关 API 说明
public UiObject getChildByDescription (UiSelector childPattern, String text)
public UiObject getChildByText (UiSelector childPattern, String text)
public UiObject getChildByInstance(UiSelector childPattern, String text)
public void testDemo1() throws UiObjectNotFoundException{
UiCollection collection=new UiCollection(new UiSelector().className("android.widget.ListView"));
UiSelector childPattern=new UiSelector().className("android.widget.TextView");
String text="Music";
UiObject music=collection.getChildByText(childPattern, text);
music.click();
}
public void testDesc() throws UiObjectNotFoundException{
UiCollection collection=new UiCollection(new UiSelector().resourceId("com.android.dialer:id/top"));
UiSelector childPattern=new UiSelector().className("android.widget.FrameLayout");
String text="4";
UiObject forth=collection.getChildByDescription(childPattern, text);
forth.click();
}
public void testInstance() throws UiObjectNotFoundException{
UiCollection collection=new UiCollection(new UiSelector().resourceId("com.android.dialer:id/top"));
UiSelector childPattern=new UiSelector().className("android.widget.FrameLayout");
UiObject child1=collection.getChildByInstance(childPattern, 0);
UiObject child0=collection.getChildByInstance(childPattern, 10);
UiObject child00=collection.getChildByInstance(childPattern, 10);
UiObject child8=collection.getChildByInstance(childPattern, 7);
UiObject child6=collection.getChildByInstance(childPattern, 5);
child1.click();
sleep(500);
child0.click();
sleep(500);
child00.click();
sleep(500);
child8.click();
sleep(500);
child6.click();
sleep(500);
}
在 UiSelector 选择器的查找条件中从子 UI 元素中搜索,递归寻找多有符合条件的自己.
再次用描述/文本/实例条件从前面搜索子集定位到想要的元素
参数:
childPattern UiSelector从子元素中的选择条件
Text、instance 从搜索中的元素中再次用描述/文本/实例条件搜索元素
返回值:UiObject
抛出异常: UiObjectNotFoundException
- 获取某种搜索条件组件的数量
(1)相关 API说明
public int getChildCount (UiSelector childPattern)
public void testCount() throws UiObjectNotFoundException{
UiCollection collection=new UiCollection(new UiSelector().index(0));
int textViewCount=collection.getChildCount(new UiSelector().className("android.widget.TextView"));
System.out.println("TextView Count:"+textViewCount);
UiCollection tableCollection=new UiCollection(new UiSelector().className("android.widget.TableLayout"));
int tableChildCount=tableCollection.getChildCount();
System.out.println(tableChildCount);
}
按照 UiSelector 查找条件递归查找所有符合条件的子子孙孙集合的数量
参数:
childPattern 选择条件
返回值: int 符合条件的子孙孙集合的数量