Android自动化测试之UIAutomator
来源:互联网 发布:程序员发展前景 编辑:程序博客网 时间:2024/05/16 14:18
Android自动化测试之UIAutomator
写在最前面,因为我们的项目使用aar模块化打包,之前写的appium程序没法用了,原因是页面的id无法识别了。现在正在看怎么处理,or其他类似的框架都是怎么干活的。用了好几天,终于把uiautomator调试通过了。汗,真心复杂。。。
文档:
http://developer.android.com/tools/help/uiautomator/index.html
http://developer.android.com/tools/testing/testing_ui.html
why UIAutomator
作为亲儿子UiAutomator随Android同步推出,随Android版本同步升级,经过多次迭代目前已经相当稳定。 相比MonkeyRunner,UiAutomator接口丰富易用,可以支持所有Android事件操作,事件操作不依赖于控件坐标,可以通过断言和截图验证正确性,非常适合做UI测试。
UIAutomator不需要测试人员了解代码实现细节,属于功能和黑盒测试。测试代码结构简单,编写容易,学习曲线低。基于JAVA,一次编译可以运行于所有Android设备。
注: UIAutomator不适合OpenGL和HTML为主的程序,因为这类程序未使用Android的view体系。并且手机版本需要在4.1之上。
uiautomatorviewer
uiautomatorviewer位于sdk/tools目录下,可以扫描、分析待测试应用界面,分析结果可以导出为xml与截图。通过该工具可以分析出UI控件的id,text,focusable等等各种属性,甚至布局上的层次关系。
可以通过./uiautomatorviewer
启动该工具。
uiautomator
uiautomator是一个包含一套UI测试API,和支持运行测试程序的JAR包。该JAR包位于
sdk/platforms/android-*/uiautomator.jar.
使用时需要注意自己的SDK版本需要大于16, SDK Tools版本需要大于21.
uiautomator使用步骤
1.创建一个Java工程
File-->New-->Java Project 输入工程名称,例如CalculatorAutoTest. 点击Finish
2.添加必要的Jar包
在Project Explorer中右击刚刚创建的这个工程,选择 Properties-->Java build Path添加如下JAR包:
a.选择Add library -->JUnit选择Junit4
b.选择Add External JARS, 选择sdk/platforms/android-*/
目录下的uiautomator.jar
和android.jar
,路径中的 *
请使用自己下载的最新版本。
3.File-->new-->Class创建一个新的文件,并确保该文件继承自UiAutomatorTestCase.
public class CalTest extends UiAutomatorTestCase {}
4.编写测试用例,通常可以为一个测试用例编写一个单独的方法:
package automatortest1;import java.io.IOException;import android.os.RemoteException; import com.android.uiautomator.core.UiDevice;import com.android.uiautomator.testrunner.UiAutomatorTestCase;public class UIAutomatorTest extends UiAutomatorTestCase{ public static final String MAIN_ACTIVITY_NAME = "com.tmall.wireless/.module.launchalert.TMLaunchAlertActivity"; //用了天猫的启动activity做实验 public void testStart() throws RemoteException{ UiDevice device = getUiDevice(); // 唤醒屏幕 device.wakeUp(); assertTrue("screenOn: can't wakeup", device.isScreenOn()); // 启动App try { Runtime.getRuntime().exec( "am start -n "+MAIN_ACTIVITY_NAME); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } sleep(2000); }}
5,编译测试用例准备
a,执行 android list target
获取目标平台对应的id
D:\AndroidSDK\sdk\tools>android list targetsAvailable Android targets:----------id: 1 or "android-9" Name: Android 2.3.1 Type: Platform API level: 9 Revision: 2 Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 Tag/ABIs : default/armeabi----------id: 10 or "android-18" Name: Android 4.3.1 Type: Platform API level: 18 Revision: 3 Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default) Tag/ABIs : default/armeabi-v7a ----------id: 21 or "Google Inc.:Google APIs:18" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 3 Description: Android + Google APIs Based on Android 4.3.1 (API level 18) Libraries: * com.google.android.media.effects (effects.jar) Collection of video effects * com.android.future.usb.accessory (usb.jar) API for USB Accessories * com.google.android.maps (maps.jar) API for Google Maps Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default),xxx Tag/ABIs : default/armeabi-v7a
这里我使用的android4.3,对应id=10
b,uiautomator生成build.xml
<android-sdk>/tools/android create uitest-project -n <projectName> -t targetId -p <projectPath>
命令使用具体如下:
D:\AndroidSDK\sdk\tools>android create uitest-project -n automatortest1 -t 10 -p "D:\\Users\\workspace\\automatortest1" Added file D:\Users\workspace\automatortest1\build.xml
6,执行 ant build
最开始生成的build.xml中,default是help,修改成build。
<project name="automatortest1" default="build">
然后使用命令行或者在IDE中执行ant build
.
7,将生成的jar包放到app中
D:\Users\workspace\automatortest1\bin>adb push automatortest1.jar /data/local/tmp/163 KB/s (1336 bytes in 0.008s)
8,执行
D:\Users\workspace\automatortest1\bin>adb shell uiautomator runtest automatortest1.jar -e outputFormat simple -c automatortest1.UIAutomatorTest#testStart.Time: 5.048OK (1 test)
android 命令备查
D:\AndroidSDK\sdk\tools>android -h Usage: android [global options] action [action options] Global options: -h --help : Help on a specific command. -v --verbose : Verbose mode, shows errors, warnings and all messages. --clear-cache: Clear the SDK Manager repository manifest cache. -s --silent : Silent mode, shows errors only. Valid actions are composed of a verb and an optional direct object: - sdk : Displays the SDK Manager window. - avd : Displays the AVD Manager window. - list : Lists existing targets or virtual devices. - list avd : Lists existing Android Virtual Devices. - list target : Lists existing targets. - list device : Lists existing devices. - list sdk : Lists remote SDK repository. - create avd : Creates a new Android Virtual Device. - move avd : Moves or renames an Android Virtual Device. - delete avd : Deletes an Android Virtual Device. - update avd : Updates an Android Virtual Device to match the folders of a new SDK. - create project : Creates a new Android project. - update project : Updates an Android project (must already have an AndroidManifest.xml). - create test-project : Creates a new Android project for a test package. - update test-project : Updates the Android project for a test package (must already have an AndroidManifest.xml). - create lib-project : Creates a new Android library project. - update lib-project : Updates an Android library project (must already have an AndroidManifest.xml). - create uitest-project: Creates a new UI test project. - update adb : Updates adb to support the USB devices declared in the SDK add-ons. - update sdk : Updates the SDK by suggesting new platforms to install if available.
执行 android list target
即可获得已经安装的SDK的平台版本。
- Android自动化测试之UIAutomator
- Android自动化测试之UIAutomator
- Android自动化测试之UIAutomator(一)
- android自动化测试之Uiautomator-UiDevice-API
- Android自动化测试之 Uiautomator-UiDevice-API
- Android自动化测试之UIAutomator(一)
- Android自动化测试UiAutomator之环境配置
- 自动化测试之uiautomator
- android uiautomator自动化测试
- UiAutomator android自动化测试
- Android-自动化测试UIAutomator
- Android自动化测试uiautomator
- Android UiAutoMator自动化测试
- Android Uiautomator 自动化测试
- Android Uiautomator 自动化测试
- Android自动化测试之UIAutomator(三)---比对测试截图
- andorid自动化测试之uiautomator
- Android自动化测试(UiAutomator)
- HDU -- 1233 还是畅通工程(mst)
- SharePoint JS Link 之(四)JSlink常见例子和代码下载
- 关于@override报错的问题
- Web_PHP_DedeCMS_字段替换模块;
- IPVS基于应用层任意偏移字段HASH值的负载均衡算法
- Android自动化测试之UIAutomator
- mysql源码阅读笔记 (1) 底层物理页面的数据结构
- 文件读写两种方式
- Android为整个应用切换第三方字体
- Opencv中.xml和.yml读写
- javascript对象详述
- Web_JavaScript_头部隐现模块;
- MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议
- 解决unicodedecodeerror ascii codec can’t decode byte 0xd7 in position 9 ordinal not in range(128)