Android自动化测试(UiAutomator)

自动化测试可以完成哪些任务呢?
简单的说,那些重复性的测试工作,都可以交给自动化完成:
1、设置手机的语言
2、添加、删除、收藏联系人
3、拨号、挂断
4、甚至发送短信、收藏短信
如果需要上面的功能,那么就开始自动化之旅吧。

二、Android自动化测试简单介绍
Android自动化测试主要分为Monkeyrunner、Rubotium、UiAutomator、Monkey(在我看来这个不算)等。主要特点:
1、Monkeyrunner:优点:操作最为简单,可以录制测试脚本,可视化操作;缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限;
2、Rubotium:主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大;缺点是针对APK操作,而且需要对APK重新签名(有工具),因此操作相对复杂;
3、UiAutomator:优点:可以对所有操作进行自动化,操作简单;缺点:Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了;
4、Monkey:准确来说,这不算是自动化测试,因为其只能产生随机的事件,无法按照既定的步骤操作;
由上面介绍可以有这样的结论:测试某个APK,可以选择Rubotium;测试过程可能涉及多个APK,选择UiAutomator;一些简单的测试,选择Monkeyrunner;

本文主要介绍UiAutomator的使用方法。
三、环境搭建
3.1、必备条件:
1、JDK
2、SDK(API高于15)
3、Eclipse(安装ADT插件)
4、ANT(用于编译生成jar)
3.2、简要步骤:
1、安装JDK并添加环境变量。
安装后,一定要通过JAVA_HOME的方式添加环境变量,即先建立JAVA_HOME变量,然后在path中添加%JAVA_HOME%\bin;
2、添加SDK环境变量。
一定要先建立ANDROID_HOME,然后把%ANDROID_HOME%\tools添加到path中;
3、安装Eclipse,并安装ADT插件。
4、安装ANT工具,并添加环境变量。
同样一定要先建立%ANT_HOME%变量,然后在path中添加%ANT_HOME%\bin

四、详细操作
4.1、建立工程
用Eclipse新建Java Project,注意,不是Android Project!
4.2、添加JUnit库
这里写图片描述
4.3、添加Android库
找到路径Android-sdk\platforms\android-17\下面的android.jar和uiautomator.jar添加进来:
这里写图片描述
4.4、在src中添加包,然后添加class文件

package com;

import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class Runner extends UiAutomatorTestCase {

    /**
     * @param args
     */
    public void testDemo() throws UiObjectNotFoundException {  
         getUiDevice().pressHome();  
        // 进入设置菜单  
        UiObject settingApp = new UiObject(new UiSelector().text("Settings"));  
        settingApp.click();  
        //休眠3秒  
        try {  
            Thread.sleep(3000);  
        } catch (InterruptedException e1) {  
            e1.printStackTrace();  
        }  
        // 进入语言和输入法设置  
        UiScrollable settingItems = new UiScrollable( new UiSelector().scrollable(true));  

        UiObject languageAndInputItem = settingItems.getChildByText(  
                new UiSelector().text("Language & input"), "Language & input", true);  
        languageAndInputItem.clickAndWaitForNewWindow();  

        //找到“English”的可点击项(因为当前是英文环境)  
        UiObject setLanItem = new UiObject(new UiSelector().text("English"));  
        setLanItem.clickAndWaitForNewWindow();  


        //Log输出  
        System.out.println("setLanItem-->" + setLanItem.getPackageName());  


        //由于无法识别中文,因此我们这里使用坐标去选择“简体中文”项  
        getUiDevice().click(350, 250);  

        //点击返回键,回到待机界面  
        getUiDevice().pressBack();  
        getUiDevice().pressBack();  
        getUiDevice().pressBack();  

    }  

}

上面的工程路径:F:\Waps_Android_Eclipse\test_demo
CMD进入\Android-sdk\tools\目录下,运行命令:
android list
查看API大于15的SDK的ID值,当前是4; (看自己的电脑)
这里写图片描述
4.6、创建build文件
仍然在\Android-sdk\tools\目录下,运行命令:
android create uitest-project -n -t -p
比如:
android create uitest-project -n AutoRunner -t 6 -p F:\Waps_Android_Eclipse\test_demo\Runner
上面的name就是将来生成的jar包的名字,可以自己定义,android-sdk-ID就是上面看到的6;path是Eclipse新建的工程的路径;运行命令后,将会在工程的根目录下生成build.xml文件。如果没生成,检查上面的步骤。
这里写图片描述
4.7、编译生成jar
CMD进入项目的工程目录,然后运行ant build,将使用ant编译生成jar,成功将会提示:
这里写图片描述
然后会在bin目录下生成jar文件。
4.8、push并运行jar
adb push (jar文件路径) data/local/tmp
adb shell uiautomator runtest (jar文件名) -c (工程中的类名,包含包名)
比如:
adb push F:\Waps_Android_Eclipse\test_demo\bin\test_demo.jar data/local/tmp
adb shell uiautomator runtest test_demo.jar -c com.Runner
这里写图片描述
这里写图片描述
然后就能看到手机会按照Runner中的步骤自动执行。具体效果就是,进入设置菜单,然后再进入“语言和输入法”菜单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值