Android无线测试之—UiAutomator UiCollection API介绍

UiCollection类介绍

一、UiCollection类说明

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

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

二、UiCollection功能说明

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

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

三、UiCollection使用场景

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

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

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

四、相关API介绍:

1、从集合中查找对象:

1)相应API介绍:

返回值API
UiObjectgetChildByText(UiSelector childPattern, String text)
UiObjectgetChildByDescription(UiSelector childPattern, String text)
UiObjectgetChildByInstance(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

 

转载于:https://www.cnblogs.com/fsw-blog/p/4563950.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值