UiObject可以理解为控件的对象,主要对对象进行操作。按照一定条件(UiSelector)获取UiObject对象,之后对对象进行相应的操作,如下图所示。

对于对象的操作主要有点击/长按、拖动/滑动、文本输入与清除、属性、对象是否存在、手势操作等。

点击与长按方面的方法:

  举例:UiObject ok = new UiObject(new UiSelector().text("OK"));//声明对象

     ok.click();//点击"OK" text.

  1.public boolean click() 点击对象

  2.public boolean clickAndWaitForNewWindow(long timeout) 点击对象,等待新窗口出现,参数为等待超时时长

  3.public boolean clickAndWaitForNewWindows() 点击对象,等待新窗口出现

  4.public boolean clickBottomRight() 点击对象的右下角

  5.public boolean clickTopLeft() 点击对象的左上角

  6.public boolean longClick() 长按对象

  7.public boolean longClickBottomRight() 长按对象的右下角

  8.public bolean longClickTopLeft() 长按对象的左上角

拖拽与滑动方面的方法:

  举例:UiObject answerCall = new UiObject(new UiSelector().textStartWith("右滑接听"));

      answerCall.swipeRight(10);

  1.public boolean dragTo(UiObject destObj, int steps)

    拖拽对象到另一个对象上,步长可设置拖动的速度,步长越小,拖动速度越快。

  2.public boolean dragTo(int deskX, int deskY, int steps)

    拖拽对象到屏幕某个坐标位置上,步长可设置拖动速度

  3.public boolean swipeDown(int steps)

    拖动对象往下滑

  4.public boolean swipeLeft(int steps)

    拖动对象往左滑

  5.public boolean swipeRight(int steps)

    拖动对象往右滑

  6.public boolean swipeUp(int steps)

    拖动对象往上滑

输入文本与清除文本方面的操作:

  举例:UiObject inputMessage = new UiObject(new UiSeletor().text("Please inout message content"));

     inputMessage.setText("Message Test") //在短信编辑框中输入文本内容

     UiObject clearMessage = new UiObject(new UiSelector().text("Message Test"));

     clearMessage.clearTextField(); //输入完后清除短信编辑框文本内容

  1.public boolean setText(String text) 在对象中输入文本

  2.public boolean clearTextField() 清除编辑框文本

获取对象属性方面的方法:

  举例:UiObject getTextObject = new UiObject(new UiSelector().className(android.widget.TextView)) //获取第一个textView

     String textrString = getTextObject.getText(); //获得textView的文本

  1. public rect getBounds()

    获取对象矩形坐标,矩形坐标左上角与右下角坐标。

  2.public UiObject getChild(UiSelector selector)

    获取对象的子类对象,可以递归获取子孙当中的某个对象

  3.public int getChildCount()

    获得下一级子类的数量

  4.public String getClassName()

    获得对象类名属性的类名文本

  5.public String getContentDescription()

    获得对象的描述属性的描述文本

  6.public UiObject getFromParent(UiSelector selector)

    从父类获取子类,按照uiselector获取兄弟类

  7. public String getPackageName()

    获取对象包名属性的包名文件

  8.public final UiSelector getSelector()

    获取selector用于调试

  9.public String getText()

    获取对象的文本属性中的文本

属性判断方面的方法:

  举例:UiObject inpputTextObject = new UiObject(new UiSelector().className("android.widget.Switch")); //声明开关对象

  if(inputTextObject.isChecked())

  {

    inputTextObject.click(); //如果开关是开,则点击关闭。

  }

  1.public boolean isCheckable() 检查对象的checkable属性是否为true

  2.public boolean isChecked() 检查对象的checked属性是否为true

  3.public boolean isClickable() 检查对象的clickable属性是否为true

  4.public boolean isEnabled() 检查对象的enable属性是否为true

  5.public boolean isFocusable() 检查对象的focusable属性是否为true

  6.public boolean isLongClickable() 检查对象的longClickable属性是否为true

  7.public boolean isScrollable() 检查对象的scrollable属性是否为true

  8.public boolean isSelected() 检查对象的selected属性是否为true

手势操作方面的方法:

  举例:

  UiObject framObject = new UiObject(new UiSelector().className("android.widget.FrameLayout"));

  PointerCoords p = new PointerCoords();

  p.x = 500;

  p.y= 500;

  p.pressure = 1;

  p.size = 1;

  PointerCoords p1 = new PointerCoords();

  p1.x = 600;

  p1.y= 600;

  p1.pressure = 1;

  p1.size = 1;

  PointerCoords p2 = new PointerCoords();

  p2.x = 500;

  p2.y=500;

  p2.pressure = 1;

  p2.size = 1;

  frameObject.performMultiPointerGesture(p,p1,p2);

  1.public boolean performTwoPointerGesture(Point staretPoint1, Point statsPoint2, Point endPoint1, Point endPoint2, int steps)

    执行任意两个手指触控手势,模拟两个手指手势

  2.public boolean pinchIn(int precent, int steps)

    手势操作,两点向内收缩

  3.public boolean pinchOut(int percent, int steps)

    手势操作,两点向外张开

  4.public boolean performMultiPointerGesture(PointerCoords... touches)

    执行单手指触手势,可定义任意手势与形状

  

判断对象是否存在、是否出现与是否消失方面的方法:

  举例:

  Runtime.getRuntime().exec(am start -n com.android.calculator2/com.android.calculator2.Calculator); // 打开计算机

  UiObject addObject = new UiObject(new UiSelector().text("+)); //计算机界面"+"对象

  addObject.waitForExists(10000);

总结:

  1.声明UiOject对象后,不管对象存不存在都不会有问题---先声明对象,后操作;

  2.当对象可能出现可能不出现的时候,需要对对象进行判断;

此博客参考文档:

http://wenku.baidu.com/view/4e242fb9680203d8ce2f24f6.html?re=view

  1.public boolean waitForExist(long timeout) 等待对象出现

  2.public boolean waitUntilGone(long timeout) 等待对象消失

  3.public boolean exists() 检查对象是否存在

Android自动化测试Uiautomator--UiObject接口简介的更多相关文章

  1. 【转】Android自动化测试(UiAutomator)——UiObject

    本文主要讲解使用UiAutomator的一些技巧,希望对于初学者有一定的帮助 UiObject 1.首先要声明对象 UiObject XXX = new UiObject(new Selector) ...

  2. Android自动化测试-UiAutomator2环境搭建

    Android自动化测试-UiAutomator环境搭建(QQ交流群:490451176) 一.环境准备 1. 安装android sdk,并配置环境变量 2. 安装android studio,国内 ...

  3. Android自动化测试框架UIAutomator原理浅析

    UIAutomator是一个Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架,它只能用于UI即黑盒方面的测试.所以UIAutomator只能运 ...

  4. 【转】Android自动化测试(UiAutomator)简要介绍

    一.一个BUG引发的问题   如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?  ...

  5. Android自动化测试(UiAutomator)

    一.一个BUG引发的问题   如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?  ...

  6. Android自动化测试-Robotium(一)简介

    一.Robotium原理 Robotium是一款Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击.长按.滑动等).查找和断言机制的API ...

  7. 几种常见的Android自动化测试框架及其应用

    随着Android应用得越来越广,越来越多的公司推出了自己移动应用测试平台.例如,百度的MTC.东软易测云.Testin云测试平台…….由于自己所在项目组就是做终端测试工具的,故抽空了解了下几种常见的 ...

  8. 解放双手——Android自动化测试

    解放程序猿宝贵的右手(或者是左手) http://blog.csdn.net/eclipsexys/article/details/45622813 --Android自动化测试技巧 Google大神 ...

  9. Android自动化测试学习路线

    最近在整理Android自动化测试的相关资料,大体上把一些知识点梳理了,这里做一个简单的分享! Android里面测试相关的工具和框架太多了.你应该从以下几个方面入手. 编程语言的选择 如果你要学习的 ...

  10. Android自动化测试探索

    Android自动化测试探索 前言 通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线.但是,随着时间的堆叠,一款产品的功能也越来越多.这时,我们为了保证产品 ...

随机推荐

  1. StretchDIBits速度测试(HALFTONE)

    StretchDIBits速度测试(HALFTONE) 下面实验中显示窗口大小为1024*768,拉伸模式设为HALFTONE. 一.单通道图像 (1) 保持图像高度为1024,宽度从24到2024递 ...

  2. android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题

    svn和git的工作机制:  SVN 是集中式或者有中心式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要 ...

  3. myBati初学

    创建数据库(y2165) MyBatis环境搭建1.在pom.xml引入依赖2.得替换build节点,为了让程序编译在main中所有子包下的配置文件3.构建大配置,位于resources<?xm ...

  4. 关于Pre-bound JDBC Connection found! HibernateTransactionManager does not 异常小结

    昨天帮女朋友配置ssh框架的多数据源, 本以为对此已经很熟悉,配置完其他的错倒是还能接受,调了一下就好了.  唯独 Pre-bound JDBC Connection found! Hibernate ...

  5. Spring框架学习-Spring的AOP概念详解

    一.SpringAOP的概述. AOP(Aspect Oriented Programming),面向切面编程,通过预编译方式和运行期间动态代理实现程序的功能的统一维护的技术.AOP是OOP(面向对象 ...

  6. 关于React的赋值与调用方法

    #关于React的赋值与调用方法 比如调用方法的时候我们可以这样来使用closeFrm() <div className = "infoFrm_close" onMouseO ...

  7. -bash: mail: command not found

    近日,安装了一个最小化的centos 6.3 6,用mail发送邮件进行测试的时候提示-bash: mail: command not found mailx没有安装,于是: yum -y insta ...

  8. 添加/删除 windows下Git右键菜单

    从网上搜索了些方法,总结一下 不显示右键菜单: 方法1: 安装的时候选择不添加右键菜单. 方法2(绝对有效): 运行CMD Windows 64 输入命令(地址为git安装地址) cd "C ...

  9. (二)SpringMVC之执行的过程

    (DispatcherServlet在Spring当中充当一个前端控制器的角色,它的核心功能是分发请求.请求会被分发给对应处理的Java类,Spring MVC中称为Handle.) ①   用户把请 ...

  10. keras中的shape/input_shape

    在keras中,数据是以张量的形式表示的,张量的形状称之为shape,表示从最外层向量逐步到达最底层向量的降维解包过程.“维”的也叫“阶”,形状指的是维度数和每维的大小.比如,一个一阶的张量[1,2, ...