Android自动化测试Uiautomator--UiObject接口简介

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() 检查对象是否存在

时间: 2024-11-06 16:44:54

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

Android自动化测试-UiAutomator环境搭建

Android自动化测试-UiAutomator环境搭建 一.环境准备 1. 安装android sdk,并配置环境变量 2. 安装android studio,国内访问官网受限,如果下载不到,可以到我的百度云盘下载: https://pan.baidu.com/s/1bpq5wK3 此云盘中有uiautomator2所依赖的jar包,可以同时下载 二.新建Android Studio工程 新建一个project,输入application name,下一步, 默认选择,下一步, 选择 empt

android自动化测试-UiAutomator使用入门

为什么选择UiAutomator 作为亲儿子UiAutomator随Android同步推出,随Android版本同步升级,经过多次迭代目前已经相当稳定. 相比MonkeyRunner,UiAutomator接口丰富易用,可以支持所有Android事件操作,事件操作不依赖于控件坐标,可以通过断言和截图验证正确性,非常适合做UI测试. UIAutomator不需要测试人员了解代码实现细节,属于功能和黑盒测试.测试代码结构简单,编写容易,学习曲线低.基于JAVA,一次编译可以运行于所有Android设

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

一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?    简单的说,那些重复性的测试工作,都可以交给自动化完成:        1.设置手机的语言        2.添加.删除.收藏联系人        3.拨号.挂断        4.甚至发送短信.收藏短信 如果需要上面的功能,那么就开始自动化之旅吧. 二.Android自动化测试简单介绍 Androi

Android自动化测试(UiAutomator)

一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?    简单的说,那些重复性的测试工作,都可以交给自动化完成:        1.设置手机的语言         2.添加.删除.收藏联系人         3.拨号.挂断         4.甚至发送短信.收藏短信 如果需要上面的功能,那么就开始自动化之旅吧. 二.Android自动化测试简单介绍 And

Android 自动化测试(4)<uiautomator> 单元测试

在之前的系列文章中,我介绍过用java来实现过 Android 自动化测试(1)如何安装和卸载一个应用(java).Android 自动化测试(2)根据ID查找对象(java):然后又介绍了用python语言来实现Android 自动化测试(3) 根据ID查找对象&touch&type (python).还说过后续要写点关于单元测试和代码覆盖测试的文章.今天要介绍的就是单元测试. 1. 概要 做过java单元测试的同学,使用Android的单元测试比较简单,参见 如何进行Android单元

Android自动化测试课程大纲

Native App与Web App的自动化测试方法 Android自动化测试常用工具介绍 Robotium Android的Instrumentation机制 Robotium环境搭建及基本使用方法 Robotium基本API的使用 基于Robotium搭建测试框架 UIAutomator UIAutomator架构与原理介绍 UIAutomator环境搭建及基本使用方法 UIAutomator基本API的使用(案例演练) UiDevice UiSelector UiObject UiColl

Android自动化测试探索

前言 通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线.但是,随着时间的堆叠,一款产品的功能也越来越多.这时,我们为了保证产品的质量,就需要在每次测试时将所有的流程都走一遍.然而,对于一款庞大的产品来说这是困难又复杂的.因为我们自己手动测试需要花费大量的时间来完成主业务测试这种重复性工作.为了保证效率以及解决成本,我们就需要考虑将这些过程采用自动化测试来完成. 自动化测试介绍 何为自动化测试?自动化测试就是通过计算机将我们人工操作的动作自动完成,比如自

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

解放程序猿宝贵的右手(或者是左手) --Android自动化测试技巧 Google大神镇楼 : http://developer.android.com/tools/testing-support-library/index.html#UIAutomator 前言: 觉得文章太长不想往后翻的朋友,你们会后悔的,当然,你也可以选择先看后面的,你会觉得很爽,但是相信我,你还是会回来看前面的.那么,还是慢慢往后翻吧. 导入: 人们懒的走路,才创造了汽车: 人们懒的爬楼,才创造了电梯: 人们懒的扫地,才

Android自动化测试框架分析

摘自<深入理解Android自动化测试>作者:许奔 1. 稳定性好:尽可能少地通过控件index进行节点判断. 2.可移植性好:尽可能少地通过坐标进行控件定位. monkey.monkeyrunner通过坐标进行控件定位. 3. 支持多应用交互:框架必须支持跨应用. instrumentation不支持跨应用. 4. 运行效率高:窗口跳转监控和窗口定位要准确. monkey.monkeyrunner窗口跳转监控和窗口定位不准确. 5. 容易上手:框架接口要容易理解和掌握. monkeyrunn

Android 自动化测试框架

Android常用的自动化测试工具框架: Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,Monkey Talk 但是这些工具框架都有什么关系呢,先通过一张图来了解一下吧.(图是某博客上借过来的) 是不是一脸懵逼,不知道这是什么鬼.下面详细了解一下. 一.Monkey 是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用