uiautomator跑安卓端UI testing

用uiautomator做安卓的app端的UI testing的环境搭建及编jar包和运行case的步骤如下:

1、新建java工程

2、右键properties,

添加junit4的library,并添加android.jar和uiautomator的jar包依赖

3、在工程下新建package,之后新建类,代码如下:

(备注:extends的类需要写清楚是UiAutomatorTestCase ,具体的方法需要以test开头,并且throws UiObjectNotFoundException )

  1 package com.ganji.loginhelper;
  2
  3
  4
  5 import com.android.uiautomator.core.UiObject;
  6
  7 import com.android.uiautomator.core.UiObjectNotFoundException;
  8
  9 import com.android.uiautomator.core.UiScrollable;
 10
 11 import com.android.uiautomator.core.UiSelector;
 12
 13 import com.android.uiautomator.testrunner.UiAutomatorTestCase;
 14
 15 public class Runner extends UiAutomatorTestCase {
 16
 17    public void testDemo() throws UiObjectNotFoundException {
 18
 19   // Simulate a short press on the HOME button.
 20
 21   getUiDevice().pressHome();
 22
 23   // We’re now in the home screen. Next, we want to simulate
 24
 25   // a user bringing up the All Apps screen.
 26
 27   // If you use the uiautomatorviewer tool to capture a snapshot
 28
 29   // of the Home screen, notice that the All Apps button’s
 30
 31   // content-description property has the value “Apps”.  We can
 32
 33   // use this property to create a UiSelector to find the button.
 34
 35   UiObject allAppsButton = new UiObject(new UiSelector()
 36
 37      .description("Apps"));
 38
 39   // Simulate a click to bring up the All Apps screen.
 40
 41   allAppsButton.clickAndWaitForNewWindow();
 42
 43   // In the All Apps screen, the Settings app is located in
 44
 45   // the Apps tab. To simulate the user bringing up the Apps tab,
 46
 47   // we create a UiSelector to find a tab with the text
 48
 49   // label “Apps”.
 50
 51   UiObject appsTab = new UiObject(new UiSelector()
 52
 53      .text("Apps"));
 54
 55   // Simulate a click to enter the Apps tab.
 56
 57   appsTab.click();
 58
 59   // Next, in the apps tabs, we can simulate a user swiping until
 60
 61   // they come to the Settings app icon.  Since the container view
 62
 63   // is scrollable, we can use a UiScrollable object.
 64
 65   UiScrollable appViews = new UiScrollable(new UiSelector()
 66
 67      .scrollable(true));
 68
 69   // Set the swiping mode to horizontal (the default is vertical)
 70
 71   appViews.setAsHorizontalList();
 72
 73   // Create a UiSelector to find the Settings app and simulate
 74
 75   // a user click to launch the app.
 76
 77   UiObject settingsApp = appViews.getChildByText(new UiSelector()
 78
 79      .className(android.widget.TextView.class.getName()),
 80
 81      "Settings");
 82
 83   settingsApp.clickAndWaitForNewWindow();
 84
 85   // Validate that the package name is the expected one
 86
 87   UiObject settingsValidation = new UiObject(new UiSelector()
 88
 89      .packageName("com.android.settings"));
 90
 91   assertTrue("Unable to detect Settings",
 92
 93      settingsValidation.exists());
 94
 95   UiObject reportBug = new UiObject(new UiSelector().text("Sound"));
 96
 97   reportBug.clickAndWaitForNewWindow();
 98
 99   UiObject soundValidation = new UiObject(new UiSelector()
100
101   .text("Volumes"));
102
103    assertTrue("Unable to detect Sound",
104
105        soundValidation.exists());
106
107   getUiDevice().pressHome();
108
109   }
110
111 }

4、之后编译和发布uiautomator测试:

创建一个编译文件:

C:\Users\58>android create uitest-project -n autoLogin -t 15 -p E:\Debin2\autoLogin

Added file E:\Debin2\autoLogin\build.xml

以上是创建成功了,叫做build.xml

这个命令是:

Android create uitest-project -n xxx -t xxx -p xxx

其中-n 后面的xxx代表要project的name

-t 的15是这样获取的:通过android list,能够得到一个列表,因为我用的android.jar和uiautomator.jar是19的,所以查找到对应的是:

所以我的-t 就写成了15

然后就是-p 后面的参数,是工程所在的位置,因为这个build.xml的生成目录就是这个工程目录

命令行创建提示创建成功之后,即added file xxx这句话出现之后,在工程目录下能够看到这个文件,通过eclipse目录刷新也可以看到:(多了三个文件)

之后如果eclipse中直接有ant的这个打包设置,就可以通过在build.xml上右键Run As选择ant build,然而我的eclipse中没有配置成功,但是没关系,只要在命令行里面能运行成功就可以。

build.xml的文件打开后,能看到default后面本来是"help"的,改成build

然后我的机器中没有安装ant,去官网下载ant的文件,之后安装成功,需要进行环境变量的配置,主要包含三个地方:

ANT_HOME  D:\Program Files\apache-ant-1.9.7-bin\apache-ant-1.9.7

path  D:\Program Files\apache-ant-1.9.7-bin\apache-ant-1.9.7\bin

classpath D:\Program Files\apache-ant-1.9.7-bin\apache-ant-1.9.7\lib

然后在cmd下直接运行ant 和ant -version,如果提示正确,不是出现ant不是可用的命令这句话,就说明环境变量配置成功了

接下来是比较容易出现问题的地方:

进入到工程目录下,

命令行输入:ant + build.xml

应该是没有后面的后缀名,直接ant build

然后能看到已经build成功了,并且在工程目录的bin文件夹下,文件名叫做:autoLogin.jar

5、接下来就是将jar包push到手机中,然后运行程序了

push进入的手机的目录是/data/local/tmp,

执行case的命令是:adb shelle uiautomator runtest autoLogin.jar -c com.ganji.loginhelper.Runner

runtest后面是之前push进去的jar包,-c后面是要执行的class(class前面要加包名的,即xx.xx.package.classname)

然后就会有跑case之后的信息打出来,完成,后面就是怎么写case实现自己想要的测试效果啦~~~

时间: 2024-11-07 17:59:00

uiautomator跑安卓端UI testing的相关文章

关于微信内置浏览器安卓端session丢失问题

项目上线测试,发现微信安卓端存在用户登录无法验证session情况, 导致每次接口请求都无法识别,而苹果客户端不会出现此问题,非微信环境打开不会出现此问题,找到一些解决方案做下记录: 方案1: 由于微信内嵌浏览器对所有请求都做了代理,导致出去的ip不固定,从而导致腾讯云服务器的黏性session(基于客户端ip做的黏性session)失效.所以,解决方案有两个,要么服务器端只用一台tomcat,要么tomcat做session共享,比如 session放在Redis中.这样server1产生的s

移动端UI设计越来越流行的高斯模糊(Gaussian blur)和毛玻璃效果(磨砂效果),如何使用Android RenderScript简单实现?

高斯模糊(Gaussian blur)和毛玻璃效果(亦称磨砂效果),近两年在移动端的UI设计上越来越流行,特别是iOS手机上出现的较多,iOS系统也提供了相应的API帮助开发人员分分钟实现这两个效果.而Android系统则经历了一个漫长的探索过程,对图片的处理,从Java算法到NDK方式实现等,各种摸索层出不穷. 值得欣慰的是,Google终于在API 11中引入了 RenderScript ,一个强大的图片处理框架,帮助Android开发人员专注于图片处理算法而不是API的调度工作.使用Ren

安卓端与开发板通信

安卓端与开发板通信 1.由于我们本实验使用到的是串口2,,即串口2给wifi核心板使用,改变跳线帽,让原来串口2是提供给zigbee使用的,改为给wifi使用. 2.添加ser2net应用程序 上一次我们成功的让驱动程序支持了串口 2,并且做了简单的测试.接下来, 我们就为串口 2 添加一个应用程序,从而实现 Wi-Fi 串口 # cd /openwrt/trunk/ # make menuconfig Network -> ser2net 保存退出 # make V=99 3.烧录固件,进入系

微信公众号 几种移动端UI框架介绍

微信公众号开发,主要是移动端网页的页面开发,在这里推荐3个移动端UI框架:WeUI.SUI和Mint UI. 1. WeUI 1.1 WeUI WeUI是微信官方设计团队为微信 Web 开发量身设计,可以令用户在HTML5应用中的使用感知更加统一. 组件包含button.cell.dialog. progress, toast.article.icon等等. 资源 官方Demo:https://weui.io/ Github:https://Github.com/weui/weui (★1340

BBasic for Android-真正意义上的安卓端BBasic虚拟机

关于BBasic BB是BBK BASIC的简称,是步步高公司开发的一种编程环境.这个语言采用Quick Basic的基础语法,且增加了部分屏幕消息函数,并且可以在PC机上生成模拟器文件,可以在PC机上直接测试. 和QB相比较,BB大部分的语法和函数是一样的,当然也有不同的地方.BBasic为了支持彩屏机的需要,提供了屏幕消息函数,使得BBasic在彩屏机上可以发挥出更加优越的功能.有QB编程经验的同学使用BB将非常容易上手. BASIC是自学编程的最好语言,因为BASIC本身具有高级语言的基本

unity如何在安卓端生成日志信息

游戏发布到安卓端后会崩溃,在unity编译器运行是正常的.可以通过这个类进行捕获log. 在你想打log的地方进行appdebug.logError然后在生成的日志文件内就可以看到对应的log信息了.

安卓端通过http对Mysql进行增删改查

各类it学习视频,大家都可以看看哦!我自己本人都是通过这些来学习it只知识的! 下面是视频链接转自:http://www.cnblogs.com/wangying222/p/5492935.html https://shop61408405.taobao.com/?spm=a1z10.5-c.0.0.cAfZMN&qq-pf-to=pcqq.group Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端) 时间 2015-08-22 11:31:00 博客园-原创精

恩布企业 IM 安卓端 1.3,服务端 1.12 发布

恩布企业IM的 Android 安卓开源手机客户端 EntboostIM 发布 1.3 版本,同时恩布IM服务端更新至 1.12 版本; 安卓端主要更新内容: 增加收发手机文件功能: 登录界面,帐号框的右边加一个X按钮,可以清空帐号内容: 增加添加好友,双方验证功能,支持需要验证好友和不需要验证好友二种模式,方便运营平台管理: 完善好友(联系人)管理功能,如增加好友分组管理功能,优化界面显示和功能操作: 其他完善和优化,如企业部门增加在当前界面查看部门成员功能,修正部分BUG及性能提升: 服务端

恩布企业 IM 安卓端 1.2,服务端 1.10 发布

恩布企业IM,免费企业即时通讯,企业内部通讯平台,Android安卓开源手机客户端EntboostIM发布1.2版本,同时服务更新至1.10版本; 安卓端主要更新内容: 增加漫游消息的功能 修改当程序处于后台运行时,有些消息没有系统通知的问题 修复与离线游客会话时抛出异常的问题 优化我的消息,将只需要提示的一些群消息分离出来,单独区分为系统通知 解决系统通知时,表情显示不正常的问题,将显示表情的描述文字 优化网络异常后重新登录的问题 新增添加增加个人群组管理功能,包括创建个人群组和讨论组:邀请人