Android 自己的自动化测试(2)依据ID查找对象(java)
前一篇文章是写 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)的更多相关文章
- Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)
我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...
- Android 自己的自动化测试(4)<uiautomator>
在前面的系列文章.我与介绍java实现 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java):然后又介绍了用pyth ...
- Android 自己的自动化测试(5)<robotium>
大约Android自己的自动化测试UI测试,前出台Android 自己主动化測试(4)<uiautomator>, 在android原生的单元測试框架上,利用uiautomator.jar ...
- android真机自动化测试
appium执行用例时报错问题: 问题解析: 一般该种情况都是因为来连接了多个设备,验证办法:cmd->执行adb devices 看结果是否是多个devices ,如果是这个问题,停掉多余设 ...
- Android Native App自动化测试实战讲解(上)(基于python)
1.Native App自动化测试及Appuim框架介绍 android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动 ...
- Android Hybrid App自动化测试实战讲解(基于python)
1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...
- python在Android下的自动化测试用法
# This Python file uses the following encoding: utf-8from com.android.monkeyrunner import MonkeyRunn ...
- 使用FindControl("id")查找控件 返回值都是Null的问题
做了一个通过字符串ID查找页面控件并且给页面控件赋值的功能,过程中遇到了this.FindControl("id")返回值都是Null的问题,记录一下解决办法. 问题的原因是我所要 ...
- Android Native App自动化测试实战讲解(下)(基于python)
6.Appuim自动化测试框架API讲解与案例实践(三) 如图1,可以在主函数里通过TestSuite来指定执行某一个测试用例: 6.1,scroll():如图2 从图3中可以看到当前页面的所有元素r ...
随机推荐
- HDU 1535 Invitation Cards(SPFA,及其优化)
题意: 有编号1-P的站点, 有Q条公交车路线,公交车路线只从一个起点站直接到达终点站,是单向的,每条路线有它自己的车费. 有P个人早上从1出发,他们要到达每一个公交站点, 然后到了晚上再返回点1. ...
- windows程序员进阶系列:《软件调试》之Win32堆的调试支持
Win32堆的调试支持 为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试. 1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出. ...
- Java输出当前的日期(年月日时分秒毫秒)
package test.remote.tools.combine; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- Inside Qt Series (全集)
Inside Qt 系列 QObject这个 class 是 QT 对象模型的核心,绝大部分的 QT 类都是从这个类继承而来.这个模型的中心特征就是一个叫做信号和槽(signaland slot)的机 ...
- chrome查看headers
F12-> network标签, 刷新网页-> 找到该网页url,选择headers
- 慎得慌风 656ik67o
http://photo.163.com/q/7634581 http://photo.163.com/q/7634580 http://photo.163.com/q/7634577 http:// ...
- haskell,lisp,erlang你们更喜欢哪个?
haskell,lisp,erlang你们更喜欢哪个? haskell,lisp,erlang你们更喜欢哪个?
- 各种oracle10g下载地址(官网网页上好像找不到了)
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit ...
- 实现ios常见菜单效果的思路
眼下见过的实现边側菜单的效果.比較流行的有下面三种:(效果图) 1.菜单条覆盖在部分主视图上 附上实现该效果的一个不错的源代码地址: http://code4app.com/ios/RNFrosted ...
- ON、WHERE、HAVING的差别
ON .WHERE.HAVING都能通过限制条件筛选数据,但他们的使用及其不同.以下我们来分析三者之间的差别. 1. ON 和WHERE 全部的查询都回产生一个中间暂时报表,查询结果就是从 ...