• 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

  • 相关阅读:
    emqttd的启动脚本
    vue2的全局变量
    windows 上优雅的安装 node 和 npm
    Intent数据清理
    android 滑动刷新的实验总结
    Android 音量键拦截
    多进程通讯笔记 android aidl
    perl-Thread-Queue for openwrt
    openwrt的编译环境
    高德地图白屏的问题
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5041419.html
Copyright © 2020-2023  润新知