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. C++14系列(1):Linux下C++14开发环境配置

    g++安装 參考地址: http://sysads.co.uk/2014/07/install-gcc-gnu-4-9-1-on-ubuntu-14-04/ 当前Ubuntu的LTS版本号为14.04 ...

  2. centos 基础环境配置

    1,安装EPEL的yum源 EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterpri ...

  3. sql getdate()生成单据号

    select replace( replace( replace( replace(convert(varchar(23),getdate(),121),'-',''),':',''),' ','') ...

  4. JavaScript点击按钮显示 确认对话框

    //JavaScript点击按钮显示确认对话框 <html xmlns="http://www.w3.org/1999/xhtml"> <head> < ...

  5. 任务调度Cron表达式及Quartz代码详解

    在线Cron表达式生成器 http://cron.qqe2.com/ cron表达式详解 http://www.cnblogs.com/linjiqin/archive/2013/07/08/3178 ...

  6. zookeeper(四):核心原理(Watcher、事件和状态)

    zookeeper主要是为了统一分布式系统中各个节点的工作状态,在资源冲突的情况下协调提供节点资源抢占,提供给每个节点了解整个集群所处状态的途径.这一切的实现都依赖于zookeeper中的事件监听和通 ...

  7. Javascript实现真实字符串剩余字数提示

    //文本框剩余字数提示(字符大小) function textLimitCheckSj(thisArea, maxLength, SpanId) { var str = thisArea.value; ...

  8. [elk]logstash的grok匹配逻辑grok+date+mutate

    重点参考: http://blog.csdn.net/qq1032355091/article/details/52953837 logstash的精髓: grok插件原理 date插件原理 kv插件 ...

  9. [svc][op]pip安装ansible && yum安装python34

    相对yum安装,pip安装的好处是jinjia版本到了2.8 pip安装ansible Successfully installed MarkupSafe-1.0 PyYAML-3.12 ansibl ...

  10. Unity对象与Draw Calls的关系

    什么是Draw Calls? 首先我们先来了解一下,什么叫做“Draw Calls”:一个Draw Call,等于呼叫一次 DrawIndexedPrimitive (DX) or glDrawEle ...