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 Test &Android Code Coverage Test

时间: 2024-11-16 13:09:34

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 subdi

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是怎么根据id查找到控件的

============问题描述============ 求助.... 我有两个xml布局文件,a,b,    两个布局文件中的控件是一样的,id也是一样的.这样eclipse生成的R文件中id也是自由一个的,那么是android怎么根据这个id去查找到指定的控件,而不是查找到另一个???? ============解决方案1============ 引用 3 楼 u013818990 的回复: Quote: 引用 2 楼 kifile 的回复: 首先,你在调用 findViewById 之前,

Android 自动化测试(4)<uiautomator> 单元测试

在之前的系列文章中,我介绍过用java来实现过 Android 自动化测试(1)如何安装和卸载一个应用(java).Android 自动化测试(2)根据ID查找对象(java):然后又介绍了用python语言来实现Android 自动化测试(3) 根据ID查找对象&touch&type (python).还说过后续要写点关于单元测试和代码覆盖测试的文章.今天要介绍的就是单元测试. 1. 概要 做过java单元测试的同学,使用Android的单元测试比较简单,参见 如何进行Android单元

Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的,不是我们三言两语就能解决的,我一直想抽个时间自己再过一遍Sqlite和JDBC的,但是,大家也知道,琐事比较多,我们来说一下数据库的框架吧,事实上市面上,我觉得还可以的数据库框架有两个,ORMLite和GreenDao,我以前做的运动类的应用上,就需要存储大量的运动数据,我们最开始是在本地写数据库的

【转】Android自动化测试(UiAutomator)简要介绍

一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?    简单的说,那些重复性的测试工作,都可以交给自动化完成:        1.设置手机的语言        2.添加.删除.收藏联系人        3.拨号.挂断        4.甚至发送短信.收藏短信 如果需要上面的功能,那么就开始自动化之旅吧. 二.Android自动化测试简单介绍 Androi

Android自动化测试(UiAutomator)

一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?    简单的说,那些重复性的测试工作,都可以交给自动化完成:        1.设置手机的语言         2.添加.删除.收藏联系人         3.拨号.挂断         4.甚至发送短信.收藏短信 如果需要上面的功能,那么就开始自动化之旅吧. 二.Android自动化测试简单介绍 And

<只看这个就够了。。。>Android自动化测试及性能优化

Android自动化测试及性能优化 分类: Android Java Tools2012-12-09 23:31 4300人阅读 评论(0) 收藏 举报 软件自动化测试对于程序员来说能够确保软件开发的质量和效率.在Android编程中,Android集成了Junit单元测试框架,因此我们可以通过Junit来进行单元测试以及自动化测试. 1.引入Junit测试框架 在Manifest.xml配置文件中,我们需要引入Junit测试框架,因此需要在配置文件中添加如下代码: 在<application>

解放双手——Android自动化测试

解放程序猿宝贵的右手(或者是左手) --Android自动化测试技巧 Google大神镇楼 : http://developer.android.com/tools/testing-support-library/index.html#UIAutomator 前言: 觉得文章太长不想往后翻的朋友,你们会后悔的,当然,你也可以选择先看后面的,你会觉得很爽,但是相信我,你还是会回来看前面的.那么,还是慢慢往后翻吧. 导入: 人们懒的走路,才创造了汽车: 人们懒的爬楼,才创造了电梯: 人们懒的扫地,才