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

时间: 2024-10-10 23:20:59

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

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 subdir

Android 自动化测试(3)<monkeyrunner> 根据ID查找对象&touch&type (python)

我在之前的两篇文章中用java来实现过 Android 自动化测试(1)如何安装和卸载一个应用(java).Android 自动化测试(2)根据ID查找对象(java). 但是本质上都是用monkeyrunner对应的java lib 来实现的,但是相关的文档非常少,如果真的要用monkeyrunner来做功能性的自动化测试,强烈还是推荐使用python语言 1.monkey runner The monkeyrunner tool provides an API for writing pro

android金阳光自动化测试——学习历程:自动化预备知识上&&下

章节:自动化基础篇——自动化预备知识上&&下 网易云课堂: 上:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877113&courseId=712011 下:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877114&courseId=71

二级菜单通过一个ID查找父级ID

select `id`,`name`,`pid` AS `q_pid`,(select id From qiyu_gift_category where id = q_pid ) as root_id from qiyu_gift_category WHERE id = 1SELECT `id` FROM `qiyu_gift_category` WHERE id = (SELECT pid FROM qiyu_gift_category WHERE id = 1) LIMIT 1 二级菜单通过

android金阳光自动化测试——学习历程:电池续航上&&下

章节:自动化基础篇——电池续航自动化测试上&&下 网易云课堂: http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=878098&courseId=712011 http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=878099&courseId=7120

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070058 android-studio 3.0 from canary 5 to canary 6

我升级android-studio到了3.0 canary 6打包编译安装出现如下错误: 07-11 13:00:39.523 8913-8913/dcpl.com.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: dcpl.com.myapplication, PID: 8913 java.lang.RuntimeException: Unable to start activity ComponentInfo{dcp

Android Studio keymap到Eclipse后,查找下一个相同变量快捷键Ctrl+K失效

Android Studio在设置完Keymap到Eclipse后,原来Eclipse有一个很好使的快捷键Ctrl+K不灵了,在Eclipse中,你只要 选中一个变量,然后Ctrl+K,光标就会自动定位到下一个变量被使用的地方,这个快捷键的名称其实就是"Find+Next". 那为啥我都设置Keymap到Eclipse了,然后打开快捷键界面,看到"Find+Next"的快捷键就是Ctrl+K,为啥选中变量后, 狂Ctrl+K就是不给响应.具体的原因我在另外一篇文章:

关于找不到布局的错误android.content.res.Resources$NotFoundException: Resource ID #0x7f05003e type #0x12 is not valid

今天遇到这个错误,android.content.res.Resources$NotFoundException: Resource ID #0x7f05003e type #0x12 is not valid 我在R文件中找到了这个这个ID的源  原来是一个布局文件,我给他定义了ID直接进行引用(很蠢是不是,新手嘛) 然后就冒了这个错 改正方法  将R.id.资源改成 R.layout.资源 就ok了  其他人未必是这么改  请勿照猫画虎

Android关于 https SSL handshake aborted 问题查找

Android 关于 https SSL handshake aborted 问题查找 记录这个问题的定位过程和问题定位的方法 1.问题描述: 项目改为使用 https 协议,访问时发现返回错误代码: 域名:https://sandbox.api.xxx.com 错误:SSL handshake aborted: ssl=0x5ef8e720: I/O error during system call, Connection reset by peer 错误描述:https 在使用 ssl 时候