前一篇文章是写 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、代码:

  1. package com.robot.dream.test;
  2.  
  3. import com.android.chimpchat.adb.AdbBackend;
  4. import com.android.chimpchat.adb.LinearInterpolator.Point;
  5. import com.android.chimpchat.core.IChimpDevice;
  6. import com.android.chimpchat.core.TouchPressType;
  7. import com.android.chimpchat.hierarchyviewer.HierarchyViewer;
  8. import com.android.hierarchyviewerlib.models.ViewNode;
  9.  
  10. public class TestRobotDream {
  11.  
  12. public static Point getAbsoluteCenterOfView(ViewNode node) {
  13. Point point = getAbsolutePositionOfView(node);
  14. return new Point(point.getX() + node.width / 2, point.getY() + node.height / 2);
  15. }
  16.  
  17. public static Point getAbsolutePositionOfView(ViewNode node) {
  18. int x = node.left;
  19. int y = node.top;
  20. for(ViewNode p = node.parent; p != null; p = p.parent) {
  21. x += p.left - p.scrollX;
  22. y += p.top - p.scrollY;
  23. }
  24. return new Point(x, y);
  25. }
  26.  
  27. /**
  28. * @param args
  29. */
  30. public static void main(String[] args) {
  31. System.out.println("start");
  32. IChimpDevice device = new AdbBackend().waitForConnection();
  33. System.out.println("device ok");
  34.  
  35. device.shell("am start com.robot.dream/com.robot.dream.MainActivity");
  36.  
  37. System.out.println("monkey test connected");
  38. HierarchyViewer view = device.getHierarchyViewer();
  39. ViewNode viewNode = view.findViewById("id/center_image");
  40. //Point p = HierarchyViewer.getAbsoluteCenterOfView(viewNode);
  41.  
  42. Point p = getAbsoluteCenterOfView(viewNode);
  43. //EasyMonkeyDevice easyDevice = new EasyMonkeyDevice(null);
  44.  
  45. System.out.println(" x: "+p.getX() + " y: "+p.getY());
  46.  
  47. //By.id("");
  48. //By selector = By.id("");
  49. System.out.println("touch 1 ok");
  50. device.touch(p.getX(), p.getY(), TouchPressType.DOWN_AND_UP);
  51.  
  52. System.out.println("touch 2 ok");
  53. device.touch(p.getX(), p.getY(), TouchPressType.DOWN_AND_UP);
  54.  
  55. //easyDevice.touch(selector, TouchPressType.DOWN_AND_UP);
  56. device.dispose();
  57.  
  58. }
  59.  
  60. }

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. HDU 1535 Invitation Cards(SPFA,及其优化)

    题意: 有编号1-P的站点, 有Q条公交车路线,公交车路线只从一个起点站直接到达终点站,是单向的,每条路线有它自己的车费. 有P个人早上从1出发,他们要到达每一个公交站点, 然后到了晚上再返回点1. ...

  2. windows程序员进阶系列:《软件调试》之Win32堆的调试支持

    Win32堆的调试支持 为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试. 1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出. ...

  3. Java输出当前的日期(年月日时分秒毫秒)

    package test.remote.tools.combine; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...

  4. Inside Qt Series (全集)

    Inside Qt 系列 QObject这个 class 是 QT 对象模型的核心,绝大部分的 QT 类都是从这个类继承而来.这个模型的中心特征就是一个叫做信号和槽(signaland slot)的机 ...

  5. chrome查看headers

    F12-> network标签, 刷新网页-> 找到该网页url,选择headers

  6. 慎得慌风 656ik67o

    http://photo.163.com/q/7634581 http://photo.163.com/q/7634580 http://photo.163.com/q/7634577 http:// ...

  7. haskell,lisp,erlang你们更喜欢哪个?

    haskell,lisp,erlang你们更喜欢哪个? haskell,lisp,erlang你们更喜欢哪个?

  8. 各种oracle10g下载地址(官网网页上好像找不到了)

    Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit ...

  9. 实现ios常见菜单效果的思路

    眼下见过的实现边側菜单的效果.比較流行的有下面三种:(效果图) 1.菜单条覆盖在部分主视图上 附上实现该效果的一个不错的源代码地址: http://code4app.com/ios/RNFrosted ...

  10. ON、WHERE、HAVING的差别

    ON .WHERE.HAVING都能通过限制条件筛选数据,但他们的使用及其不同.以下我们来分析三者之间的差别. 1.       ON 和WHERE 全部的查询都回产生一个中间暂时报表,查询结果就是从 ...