前一篇文章是写 Android 自己的自动化测试(1)如何安装和卸载应用程序(java) ,以下再探索一下假设在普通java应用程序中,依据ID来查找对象

1、类库依赖:

The library dependencies are:

chimpchat.jar,common.jar,ddmlib.jar,guava-13.0.1.jar,sdklib.jar,hierchyviewer2lib.jar

They can all be found in the sdk/tools/lib subdirectory of the ADT bundle.

2、代码:

package com.robot.dream.test;

import com.android.chimpchat.adb.AdbBackend;
import com.android.chimpchat.adb.LinearInterpolator.Point;
import com.android.chimpchat.core.IChimpDevice;
import com.android.chimpchat.core.TouchPressType;
import com.android.chimpchat.hierarchyviewer.HierarchyViewer;
import com.android.hierarchyviewerlib.models.ViewNode; public class TestRobotDream { public static Point getAbsoluteCenterOfView(ViewNode node) {
Point point = getAbsolutePositionOfView(node);
return new Point(point.getX() + node.width / 2, point.getY() + node.height / 2);
} public static Point getAbsolutePositionOfView(ViewNode node) {
int x = node.left;
int y = node.top;
for(ViewNode p = node.parent; p != null; p = p.parent) {
x += p.left - p.scrollX;
y += p.top - p.scrollY;
}
return new Point(x, y);
} /**
* @param args
*/
public static void main(String[] args) {
System.out.println("start");
IChimpDevice device = new AdbBackend().waitForConnection();
System.out.println("device ok"); device.shell("am start com.robot.dream/com.robot.dream.MainActivity"); System.out.println("monkey test connected");
HierarchyViewer view = device.getHierarchyViewer();
ViewNode viewNode = view.findViewById("id/center_image");
//Point p = HierarchyViewer.getAbsoluteCenterOfView(viewNode); Point p = getAbsoluteCenterOfView(viewNode);
//EasyMonkeyDevice easyDevice = new EasyMonkeyDevice(null); System.out.println(" x: "+p.getX() + " y: "+p.getY()); //By.id("");
//By selector = By.id("");
System.out.println("touch 1 ok");
device.touch(p.getX(), p.getY(), TouchPressType.DOWN_AND_UP); System.out.println("touch 2 ok");
device.touch(p.getX(), p.getY(), TouchPressType.DOWN_AND_UP); //easyDevice.touch(selector, TouchPressType.DOWN_AND_UP);
device.dispose(); } }

3、局限性:

以上的自己主动化測试,这样的方式是採用monkeyrunner相应的java, lib来实现的。

所以其本质上就是java版的monkey runner

它能够实现的功能。基本上monkey runner也都能实现,假设用java实现。文档少。材料少。有点得不偿失。

探索用java来实现,最大的收获,是对这些測试相关类的学习。

4、后面会介绍些 Android monkeyrunner&Android Unit Auto Test&Android Code Coverage Test

Android 自己的自动化测试(2)依据ID查找对象(java)的更多相关文章

  1. Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)

    我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...

  2. Android 自己的自动化测试(4)<uiautomator>

    在前面的系列文章.我与介绍java实现 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java):然后又介绍了用pyth ...

  3. Android 自己的自动化测试(5)<robotium>

    大约Android自己的自动化测试UI测试,前出台Android 自己主动化測试(4)<uiautomator>, 在android原生的单元測试框架上,利用uiautomator.jar ...

  4. android真机自动化测试

    appium执行用例时报错问题: 问题解析: 一般该种情况都是因为来连接了多个设备,验证办法:cmd->执行adb devices  看结果是否是多个devices ,如果是这个问题,停掉多余设 ...

  5. Android Native App自动化测试实战讲解(上)(基于python)

    1.Native App自动化测试及Appuim框架介绍 android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动 ...

  6. Android Hybrid App自动化测试实战讲解(基于python)

    1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...

  7. python在Android下的自动化测试用法

    # This Python file uses the following encoding: utf-8from com.android.monkeyrunner import MonkeyRunn ...

  8. 使用FindControl("id")查找控件 返回值都是Null的问题

    做了一个通过字符串ID查找页面控件并且给页面控件赋值的功能,过程中遇到了this.FindControl("id")返回值都是Null的问题,记录一下解决办法. 问题的原因是我所要 ...

  9. Android Native App自动化测试实战讲解(下)(基于python)

    6.Appuim自动化测试框架API讲解与案例实践(三) 如图1,可以在主函数里通过TestSuite来指定执行某一个测试用例: 6.1,scroll():如图2 从图3中可以看到当前页面的所有元素r ...

随机推荐

  1. xcode6 cocos2dx开玩笑git和github学习记录

    1. git Xcode4开始,它一直Git作为一个内置的源代码控制(Source Control)工具,所以对于新项目的用途git要管理非常方便.在新建项目向导.可以直接选择Git作为源控制工具.项 ...

  2. linux命名管道通信过程

    前一个道,这节学习命名管道. 二命名管道 无名管道仅仅能用来在父子进程或兄弟进程之间进行通信,这就给没有亲缘关系的进程之间数据的交换带来了麻烦.解决问题就是本节要学习的还有一种管道通信:命名管道. 命 ...

  3. FindWindowEx使用方法

    函数功能:该函数获得一个窗体的句柄,该窗体的类名和窗体名与给定的字符串相匹配.这个函数查找子窗体,从排在给定的子窗体后面的下一个子窗体開始.在查找时不区分大写和小写. 函数原型:HWND FindWi ...

  4. sql server 2012 数据库还原方法

    USE master RESTORE DATABASE WSS_Content FROM DISK = N'D:\bak\contentbak.bak' WITH REPLACE, NORECOVER ...

  5. SilkTest高级进阶系列8 – 放下榔头,立地成佛

    在地球尚未毁灭的某天,手动测试的同事找到你所在的自动组,问是否可以帮助他们自动化一个需要连续添加100个条目的测试用例,因为他们觉得这是一个噩梦.你口头上说要先烟酒烟酒才能知道,但是内里早就满心欢喜: ...

  6. VS2010-win32下cocos2dx控制台打印的方法

    在xcode中  直接使用printf 或者 cout<<""<<endl;可以直接在控制台打印 但是在VS2010 却死活不好用   真郁闷 ------ ...

  7. EJBCA 在windows上的安装

    为了做EJBCA的封装測试,在我自己电脑上装了个,可是在国内的开发上面的介绍实在是太少.有的也仅仅是些傻瓜式的安装介绍,这是介绍在Windows上安装的过程,(后面介绍下 linux 红帽上的),有些 ...

  8. 用jsp写注冊页面

    包含单选框.多选框.session的应用,页面自己主动跳转,中文乱码的处理,入门级 对于中文乱码的处理,注意几点:注冊页面数据提交方式为post不能忘了写,页面编码方式为gbk,处理提交信息的doRe ...

  9. WCF(1)----服务创建

    本例中,我们通过一个关于Camera的服务为例子来说明WCF的开发流程,该服务比较简单,只是用来实现对Camera的添加,枚举,删除等操作. 详细步骤如下: 1:创建一个WCF Service Lib ...

  10. 119 - Greedy Gift Givers

     Greedy Gift Givers  The Problem This problem involves determining, for a group of gift-giving frien ...