UiCollection类介绍

一、UiCollection类说明

1)UiCollection类是UiObject类的子类,即UiObject类的所有方法都被UiCollection继承下来了,都可以使用

2)UiCollection代表元素条目的集合

二、UiCollection功能说明

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

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

三、UiCollection使用场景

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

2)一般用在需要找子类,且子类由于某些原因不好定位

3)获取某一类的数量,如获取联系人列表下当前试图下联系人的数量

四、相关API介绍:

1、从集合中查找对象:

1)相应API介绍:

返回值 API
UiObject getChildByText(UiSelector childPattern, String text)
UiObject getChildByDescription(UiSelector childPattern, String text)
UiObject getChildByInstance(UiSelector childPattern, int instance)

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

  再次用文本/描述/实例条件从前面搜索子集定位到想要的元素。

2)参数说明

  childPattern   UiSelector从子元素的选择条件

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

3)返回值

  UiObject

4)抛出异常

  UiObjectNotFondException

5)API应用举例

package com.test.uicollection;

import android.view.KeyEvent;

import com.android.uiautomator.core.UiCollection;
import com.android.uiautomator.core.UiDevice;
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 Demo extends UiAutomatorTestCase { /**
* @param args
*/
public static void main(String[] args) {
String jarName, testClass, testName, androidID;
jarName="demo";
testClass="com.test.uicollection.Demo";
testName="testInstance";
androidID="1";
new UiAutomatorHelper(jarName, testClass, testName, androidID); } public void testText() throws UiObjectNotFoundException{
UiDevice.getInstance().pressHome();
sleep(2000);
UiObject apps=new UiObject(new UiSelector().description("Apps"));
apps.click();
sleep(2000);
UiObject fileManage=new UiObject(new UiSelector().text("File Manager"));
fileManage.click();
sleep(2000);
UiCollection collection=new UiCollection(new UiSelector().className("android.widget.ListView"));
UiSelector childPattern=new UiSelector().className("android.widget.TextView");
String text="Movies";
UiObject music=collection.getChildByText(childPattern, text);
music.click();
} public void testDesc() throws UiObjectNotFoundException{
UiDevice.getInstance().pressHome();
sleep(2000);
UiObject phone=new UiObject(new UiSelector().text("Phone"));
phone.click();
sleep(2000);
UiCollection collection=new UiCollection(new UiSelector().className("android.widget.TableLayout")); UiSelector childPattern=new UiSelector().className("android.widget.ImageButton");
String text="one"; UiObject button=collection.getChildByDescription(childPattern, text);
button.click();
sleep(500);
} public void testInstance() throws UiObjectNotFoundException{
UiDevice.getInstance().pressHome();
sleep(2000);
UiObject phone=new UiObject(new UiSelector().text("Phone"));
phone.click();
sleep(2000);
UiObject editText=new UiObject(new UiSelector().resourceId("com.android.dialer:id/digits"));
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_MOVE_END);
String text=editText.getText();
System.out.println("THE TEXT IS: "+text);
while(editText.getText()!=""){
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_DEL);
} UiCollection collection=new UiCollection(new UiSelector().className("android.widget.TableLayout"));
UiSelector childPattern=new UiSelector().className("android.widget.ImageButton");
UiObject one=collection.getChildByInstance(childPattern, 0);
UiObject zero=collection.getChildByInstance(childPattern, 10);
UiObject eight=collection.getChildByInstance(childPattern, 7);
UiObject six=collection.getChildByInstance(childPattern, 5); one.click();
sleep(500);
zero.click();
sleep(500);
zero.click();
sleep(500);
eight.click();
sleep(500);
six.click();
sleep(500); } }

Demo.java

2、获取某种搜索条件组件的数量
1)相应API介绍

public int getChildCount(UiSelector childPattern)

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

public int getChildCount()

仅直接查找符合条件的子类的数量(不涉及后代)

2)参数说明

childPattern  选择条件

3)返回值

int  符合条件的子子孙孙集合的数量

4)API应用举例

package com.test.uicollection;

import android.view.KeyEvent;

import com.android.uiautomator.core.UiCollection;
import com.android.uiautomator.core.UiDevice;
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 Demo extends UiAutomatorTestCase { /**
* @param args
*/
public static void main(String[] args) {
String jarName, testClass, testName, androidID;
jarName="demo";
testClass="com.test.uicollection.Demo";
testName="testCount";
androidID="1";
new UiAutomatorHelper(jarName, testClass, testName, androidID); } public void testCount() throws UiObjectNotFoundException{
UiDevice.getInstance().pressHome();
sleep(2000);
UiObject phone=new UiObject(new UiSelector().text("Phone"));
phone.click();
sleep(2000); //getChildCount(UiSelector childPattern) 递归查找后代中所有符合条件的元素的数量
UiCollection collection=new UiCollection(new UiSelector().className("android.widget.TableLayout"));
UiSelector childPattern=new UiSelector().className("android.widget.ImageButton");
int imageButtonCount=collection.getChildCount(childPattern);
System.out.println("ImageButtonCount="+imageButtonCount); //getChildCount() 仅查找子类中符合条件的元素数量
UiCollection tableCcollection=new UiCollection(new UiSelector().className("android.widget.TableLayout"));
int tableImageButtonCount=tableCcollection.getChildCount();
System.out.println("TableImageButtonCount="+tableImageButtonCount);
} }

Demo.java

Android无线测试之—UiAutomator UiCollection API介绍的更多相关文章

  1. Android无线测试之—UiAutomator UiScrollable API介绍三

    获取列表子元素 一.相关API介绍 返回值 API 描述 UiObject getChildByDescription(UiSelector childPattern, String text, bo ...

  2. Android无线测试之—UiAutomator UiObject API介绍六

    手势操作 1.手势相关操作 2.相关API介绍 返回值 API 描述 boolean performMultiPointerGesture(PointerCoords[]... touches) 执行 ...

  3. Android无线测试之—UiAutomator UiDevice API介绍八

    获取包名.开启通知栏.快速设置.获取布局文件的方法 一.包名.通知栏.快速设置.布局文件等相关知识: 1)包名:标示应用的符号,每个应用的名字 2)通知栏:从主界面的顶端向下拉,就可以打开通知栏 3) ...

  4. Android无线测试之—UiAutomator UiDevice API介绍四

    拖拽与滑动 一.概念介绍: 1)拖拽:将组建从一个坐标移动到另一个坐标 2)移动:从一二坐标点移动到另一个坐标点 3)步长:从一点滑动到另一点使用的时间 二.拖拽与滑动的相关API: 返回值 方法名 ...

  5. Android无线测试之—UiAutomator UiScrollable API介绍八

    设置滚动方向 一.设置滚动方向相关API 返回值 API 描述 UiScrollable setAsHorizontalList 设置滚动方向为水平滚动 UiScrollable setAsVerti ...

  6. Android无线测试之—UiAutomator UiScrollable API介绍七

    滑动到某个对象 一.滑动到某个对象相关API 返回值 API 描述 boolean scrollIntoView(UiSelector selector) 滑动到条件元素所在位置,并且尽量让其居于屏幕 ...

  7. Android无线测试之—UiAutomator UiScrollable API介绍六

    向前与向后滚动API 一.向前与向后滚动相关API 返回值 API 描述 boolean scrollBackward(int steps) 自动以步长向后滑动 boolean scrollBackw ...

  8. Android无线测试之—UiAutomator UiScrollable API介绍五

    滑动区域校准常量设置与获取 一.校准概念 校准常量指的是:滑动操作坐标时的偏移量,用来取偏移比例 二.相关API 返回值 API 描述 double getSwipeDeadZonePercentag ...

  9. Android无线测试之—UiAutomator UiScrollable API介绍四

    获取与设置最大滚动次数常量值 一.获取与设置最大滚动次数常量值相关API 返回值 API 描述 int getMaxSearchSwipes() 获取执行搜索滑动过程中的最大滑动次数,默认最大滚动次数 ...

随机推荐

  1. 系统流畅/性能受限 谷歌Nexus4详细评测

    http://mobile.it168.com/a2012/1220/1437/000001437938_8.shtml

  2. AFN访问https设置

    AFN访问https的时候需要设定如下两个属性: manager.securityPolicy.allowInvalidCertificates = YES; manager.securityPoli ...

  3. public_brokers

    This page is an effort to list the publically-accessible MQTT brokers, often useful for testing and ...

  4. 让python cookie支持特殊字符

    让python cookie支持特殊字符 先对cookie做下简单的介绍 cookie的作用: tcp协议能够通过三次握手建立连接.client发送的多次请求能够通过句柄维护同一个连接.可是http协 ...

  5. 通过使用JanusGraph索引提高性能

    翻译整理:纪玉奇 Extending JanusGraph Server JanusGraph支持两种类型的索引:graph index和vertex-centric index.graph inde ...

  6. FreeSWITCH技巧:如何向通话的另一方号码发送dtmf?

    注:这里的文章都是本人的日常总结,请尊重下个人的劳动成果,转载的童鞋请注明出处,谢谢. 如您转载的文章发生格式错乱等问题而影响阅读,可与本人联系,无偿提供本文的markdown源代码. 联系邮箱:ji ...

  7. MEF教程

    http://www.cnblogs.com/content/archive/2013/05/31/3111156.html

  8. python学习之urlparse()

    urlparse(url, scheme='', allow_fragments=True) <scheme>://<netloc>/<path>;<para ...

  9. 卧槽! JavaScript JVM运行Java!!

    由于任何计算机语言都具有巨大的灵活性,软件世界变得有点疯狂.一旦你已经吸收了用这种语言编写的编译器的想法,那么它会编译还有什么可以留下来的?但是......用JavaScript编写的Java虚拟机J ...

  10. 解决微信小程序中Date.parse()获取时间戳IOS不兼容的问题(IOS为NaN的问题)

    前端同事在做微信小程序时发现IOS获取的时间戳为空的问题,后来通过跟踪发现,原来是因为IOS系统不支持2017-01-01格式的时间导致的, var mydata = '2017-01-01 11:0 ...