Android测试工具UiAutomator(Demo篇)
来源:互联网 发布:淘宝国际网 编辑:程序博客网 时间:2024/05/17 08:03
UiAutomator简介
UIAutomator是Android自带的一个黑盒测试工具,测试代码结构简单,编写容易,学习曲线低。基于JAVA,一次编译可以运行于所有Android设备。
UiAutomator 主要模块:
- UIDevice:通常用于获取系统的设备信息、系统按键、全局操作等。
- UiObject:获取UI元素,点击、拖拽、滑动、对象属性判断、手势等。
- UiSelector:通过各种属性节点和关系来定位组件。
- UiScrollable:操作元素滚动。
- UiCollection:用于获取满足某种搜索条件的组件集合,通过链式搜索确定最终需要的组件。
- UiWatcher:拦截异常,处理完异常后,再返回原来的脚本执行顺序。
- Configuration:对默认操作的配置。
更多详情
UiAutomator 特点:
可以测试需要在不同app之间切换的情况
只能测试Android native app
需要Android SDK 4.1+
无法获取当前load的activity
无法做网络链接测试和声音测试
debug过程比较麻烦
UiAutomator使用方法:
- Eclipse新建Java Project,注意,不是Android Project!
- 添加JUnit库
next->Libraries->Add Library - 添加Android库
将Android-sdk\platforms\android-17\下面的android.jar和uiautomator.jar添加进来
Add External JARs-> - SRC文件下添加包和class文件
Src->new->package、package->class - 查找SDK ID
CMD进入\Android-sdk\tools\目录下,运行命令:android list
查看对应android版本的SDK的ID值 - 创建build文件
在\Android-sdk\tools\目录下,运行命令:android create uitest-project -n <name> -t <android-sdk-ID> -p <path>
比如:android create uitest-project -n UiAutomator -t 60 -p E:\workspace\UiAutomator
上面的name就是将来生成的jar包的名字,可以自己定义,android-sdk-ID就是上面看到的60;path是Eclipse新建的工程的路径;运行命令后,将会在工程的根目录下生成build.xml文件。如果没生成,检查上面的步骤。 - 把类编译生成jar包
a)CMD进入项目的工程目录,然后运行ant build,将使用ant编译生成jar,成功将会提示:successful
然后会在工程的bin目录下生成jar文件
b)或者进入build.xml文件中将default=’help’修改为default=’build’
,右键点击Run As –>Ant Build,自动生成jar包 - push并运行jar
adb push <jar文件路径> data/local/tmp
adb shell uiautomator runtest <jar文件名> -c <工程中的类名,包含包名> 包名.类名 package.class
比如:adb push e:\workspace\ UiAutomator \bin\ UiAutomator.jar data/local/tmp
adb shell uiautomator runtest UiAutomator.jar -c uiautomator. UiAutomator
然后就能看到手机会按照Runner中的步骤自动执行。具体效果就是,进入设置菜单,然后再进入“语言和输入法”菜单adb shell uiautomator runtest UIAutomation.jar -c com.example.TestUiAutomation -e debug true里面的-e debug true
这个参数调试自动化测试代码
Demo:
package com.ui.test; import android.os.RemoteException;import com.android.uiautomator.core.UiObject;import com.android.uiautomator.core.UiObjectNotFoundException;import com.android.uiautomator.core.UiSelector;import com.android.uiautomator.testrunner.UiAutomatorTestCase;public class Uiautomator extends UiAutomatorTestCase { public void testDemo() throws UiObjectNotFoundException, RemoteException { //回到桌面 getUiDevice().pressBack(); getUiDevice().pressHome(); getUiDevice().pressBack(); getUiDevice().unfreezeRotation(); getUiDevice().setOrientationLeft(); getUiDevice().setOrientationRight(); // 进入更多分类 UiObject More = new UiObject(new UiSelector().text("More")); More.click(); // 进入壁纸设置 UiObject Wallpaper= new UiObject(new UiSelector().text("Wallpaper")); Wallpaper.click(); getUiDevice().pressEnter(); getUiDevice().pressBack(); //休眠3秒 try { Thread.sleep(3000); } catch (InterruptedException e1) { e1.printStackTrace(); } UiObject App_uninstall= new UiObject(new UiSelector().textContains("uninstall")); if(App_uninstall.exists() && App_uninstall.isEnabled()) { App_uninstall.click(); } for(;;) { sleep(3000); getUiDevice().pressDPadDown(); getUiDevice().pressKeyCode(23); UiObject okButton = new UiObject(new UiSelector().text("OK").className("android.widget.Button")); if(!okButton.exists()) { break; } else okButton.clickAndWaitForNewWindow(); } testDemo1(); UiObject AppStore= new UiObject(new UiSelector().text("App Store")); AppStore.click(); sleep(3000); UiObject Recommend= new UiObject(new UiSelector().text("Recommend")); Recommend.click(); sleep(3000); UiObject Install= new UiObject(new UiSelector().textContains("Five")); Install.click(); try { Thread.sleep(3000); } catch (InterruptedException e2) { e2.printStackTrace(); } UiObject successfully= new UiObject(new UiSelector().textContains("the exit key")); UiObject failed= new UiObject(new UiSelector().textContains("the OK button")); if(!successfully.exists()&&!failed.exists()) { sleep(3000); } else if(failed.exists()) { for(int i=1;i<=3;i++) { getUiDevice().pressKeyCode(23);} } else getUiDevice().pressBack(); } public void testDemo1() throws UiObjectNotFoundException{ getUiDevice().pressBack(); getUiDevice().pressHome(); getUiDevice().pressBack(); UiObject TV= new UiObject(new UiSelector().text("TV")); TV.click(); sleep(3000); getUiDevice().pressBack(); UiObject Demand= new UiObject(new UiSelector().text("Demand")); Demand.click(); sleep(3000); getUiDevice().pressBack(); }}
备注: Window环境
0 0
- Android测试工具UiAutomator(Demo篇)
- Android自动化测试工具uiautomator
- Android自动化测试工具 UiAutomator使用详解
- Android测试工具MonkeyRunner(Demo篇)
- Android测试工具Robotium(Demo篇)
- Android测试工具RobotFramework(Demo篇)
- android 4.1 UI 工具测试的新利器, uiautomator
- android自动化测试工具【UiAutomator】——打开settings实例
- android 4.1 UI 工具测试的新利器, uiautomator
- android自动化测试工具【UiAutomator】——打开settings实例
- android自动化测试工具【UiAutomator】——截图功能
- android自动化测试工具【UiAutomator】——UiObject
- 在Macbook上配置使用Android自动化测试工具uiautomator
- UiAutomator——Android自动化测试工具简要介绍
- android自动化测试工具【UiAutomator】——UiScrollable
- android自动化测试工具【UiAutomator】——UiObject
- android自动化测试工具【UiAutomator】——UiWatcher(一)
- Android Uiautomator工具使用
- Python中的循环以及break/continue/else/pass
- 数字图像处理学习笔记五
- android开发 在隐藏statusbar及navigationbar
- 项目08-03
- Sorting Json Array
- Android测试工具UiAutomator(Demo篇)
- redis和jedis在java中的基本用法
- CocosCreator自定义事件的清除方法
- 使用dev-c++建立工程(多个文件一同编译连接)并运行
- java的变量
- POJ 1201 差分约束+SPFA
- logback.xml 配置
- 生产消费者模式
- 学习IOS的第三天