robotium学习及整理

一、                      Robotium 简介

Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长 按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测 试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。

  Robotium 核心类是Solo 通过Solo 类可以对控件进行各种操作

 

 

Robotium 官网:

http://robotium.com/

 

                       

Robotium 中文官网

http://www.robotium.cn/

 

 

 

2       环境搭建

安装并配置JAVA_HOME

下载JDK1.7 并安装,安装过程中全用默认安装即可

JDK 环境配置

点击我的电脑---属性---高级---环境变量

 

新建环境变量

 

 

如果是默认安装就是上面这个路径,需要依据实际路填写

 

确定保存退出  

JDK  配置验证

 

开始----运行---输入CMD

在命令提示符下输入java –version

 

确认版本与你安装的版本是否相同

 

 

 

 

下载ADT 工具包并配置Android 环境

 

在百度输adt-bundle-windows-x86-20130917

选红色框下载

 

下载解压缩之后就可以配置Android 了

点击我的电脑---属性---高级---环境变量--- 系统变量(新建)

  ANDROID_HOME=XX盘符:\ adt-bundle-windows-x86-20130917\sdk

ANDROID_SDK_HOME= XX盘符:\ adt-bundle-windows-x86-20130917\sdk

ANDROID_AVD_HOME= XX盘符:\ adt-bundle-windows-x86-20130917\sdk

 

 

选择系统变量中 path 编辑 % ANDROID_HOME %\TOOLS;

% ANDROID_HOME %\platform-tools

 

 

确定退出

 

  ANDROID  环境配置确认

在开始---运行---输入CMD

在命令提示符下输入

ECHO % ANDROID_HOME %

ECHO % ANDROID_SDK_HOME %

ECHO % ANDROID_AVD_HOME %

ECHO %PATH%

确认相关信息与此前配置的完全相同,若不相同重启之后在确认一次,部分机器重启才能生效

以下是我电脑是配置之后的显示的结果,注意(我电脑用的是20130219 版的ADK)

 

 

 

 

3 相关工具的准备

   下载Robotium.jar

(我下载的:https://github.com/RobotiumTech/robotium/wiki/Downloads)

   如果需要操作Excel 要下载jxl

   如果需要操作Oracle 要下载Oracle 对应的驱动包

   官网演示APK(记事本APK) 下载

 

 

配置Host 以便能访问GOOG

 

方式1: 打开站长工具网站

http://tool.chinaz.com/

 

选择其它工具—超级ping

 

 

 

在输入框输:dl-ssl.google.com

检测站点只选 海外就行了

 

 

点查询

查询结果如下

 

 

我们一般选择响应时间快的加入到host文件中

 

打开C:\WINDOWS\system32\drivers\etc\host

按以下格式填写

Ip    域名

 

 

另外还有一种方式

 

http://www.360kb.com/kb/2_122.html  中的所有信息全加到HOST

 

 

  SDK 更新配置

运行Android 工具中的SDK Manager.exe

 

 

 

点击Tool----Options

在Use download cache 打V

 

醒置完之后就可以启用更新了

 

选择你想要的API 版本就可以更新了,注意该更新时间很长,有时需要一天,中间不要关机

 

 

 

4:模拟器创建

 

启动Eclipse

首次启动时会询问Workspse 路径

此时选择一个你自定义的一个路径就可以了

 

 

 

选择Windows---Android Virtual Device Manager----

 

 

 

 

点新建之后出现如下画面,注意在Device 最好不要选择Nexus 开头的 

如果选择的话最终会出现新增的模拟器右边没的其它按键不易使用

 

 

AND 名称一定要记住,后续用命令启动措拟器时需要用到,另外为了后续测试

此处SD CARD 最好配置一点空间

 

 

确定之后界面像这样

 

你仍可以选中重新编辑

 

模拟器启动方式

1:Eclipse 中用AVD 管理器启动

 在上面界面点Start

 

启动之后模拟器界面

 

 

模拟器启动方式2

命令提示符下启动

开始---运行---输CMD

Emulator @模拟器名称

 

 

 

 

用命令提示符启动之后画面就是像上面那样,注意启动之后命令提示符的那个界面不能关掉,一旦关掉模拟器也会关掉的

 

 

 

 

 

 

5重签名工具的使用

方式1:基于UI 层级的操作

下载re-sign.jar

(我下载的)

 

双击re-sign.jar

 

将需要重签名的APK 拖动到工具内

 

(提示找不到zipalign,于是我下载了一个)

 

签名之后系统会弹出信息

此里需要记录相关信息

第一栏是 APK 的包名

第二栏是主Activity 名 也就是你启动第一个画面相应的类名

 

 

 

 

签名方式2

基于脚本方式全自动运行的

将需要重签名的apk 与重签名工具放在同一个目录下

双击重签名.bat

 

 

签名之后会在当前目录下新增一个目录

 

进入新增的目录即会看到一个重签名OK 的apk 文件

 

 

 

 

 

 

 

6        APK  的安装与卸载

测试过程中均是采用adb 与机器交互,此处安装也用adb 进行安装与卸载

adb  install   apk 路径

Apk 路径可以在 输入 adb instll  之后选择要安装的APK 拖入到命令提示符即可

 

 

假如安装过程中出现如下信息有可能是签名有问题,可以重新签名一次

 

 

将重签名工具和要签名的APK 一起放到android\sdk\.android 目录下

再运行一次重签名工具

 

 

签名完再安装

以下画面显示最后一次安装成功了

 

 

安装成功之后如下所示

 

 

安装过程中还可能出现如下所示异常信息

 

找不到模拟器(一种是根本没有启动模拟器

另一种是模拟器启动了但仍找不到,此时有可能是 其它手机管家软件占用了5037  端口,需要杀掉其它软件进程之后再执行以下命令

 

(专门针对模拟器已启动,但adb devices 找不到备的处理方式)

Adb kill-server

Adb start-server

Adb devices

确认是否能找到设备

 

 

 

在模拟器的APP 栏即可找到对应的APP 了

点击模拟器的红色框框处

 

 

出现如下画面左滑

即可找到你新装的APK

 

 

APK  卸载

卸载之前需要先获取对应包名

可以按如下方法获取到包名

 

1: adb shell

2:  cd /data/data

3:  ls

 

在清单中找到与你apk 相同的名字并记录下来

 

退出adb 命令 用Exit

卸载

Adb uninstall  com.xxxxxxx.xxxx

假如要卸载计算器程序

Adb uninstall com.android,calculator2

 

 

 

 

 

 

7正式使用Robotium

 

Robotium 提供两种工作方式(一种有源代码的测试,一种没有源代码的测试)

没有源代码的需要重新签名

 

方式1 有源码的测试

有源代码的测试(此处以官网记事本apk 为例)

打开Eclipse  

导入官网记事本apk 工程

File---import

 

 

 

 

 

 

General---Existing  Projects Into WorkSpace

 

选择源工程存放路径

 

 

 

点完成

 

 

删除原始APK

 

 

 

 

重新编译生成新的APK

Project----Clena

 

选中需要重新编译的APK 点OK

 

 

选择工程点Run as----Android  Application

 

运行之后会在BIN  目录重新生成一个APK

 

 

 

正式进入测试工程

File--Project

 

 

选择Android----Android Test Project

 

 

 

 

 

按红色框框选择

 

 

 

选择APK 运行的版本,模拟器创建时用什么版本,此处就选什么版本

我的机器因为只有17所以我 选用的是17 API

 

点完成

 

在测试工程目录下新建Lib 目录

 

复制Robotium,jar jxl.jar ojdbc.jar 到Lib 目录下

 

选中三个jar 包导入到工程

 

导入之后确认界面

 

 

其它配置

选择测试工程----Build Path---Configure Build  Path

 

 

一定要在 Order And Export 中将新加入的jar 包打 V 不然在测试过程中会报   Solo 异常

 

 

点击测试工程,确认以下两个属性配置是否正确

1:Android 的版本信息

 

 

 

2: 字体格式----UTF-8

 

 

3:签名文件

 

 

 

 

 

 

 

 

在测试工程中的SRC 目录下新建一个包

 

Src---new---package

包名:com.robotium.test

 

 

将Notepad.java  copy  到com\robotium\test 目录下

修改AndroidManifest.xml

 

AndroidManifest.xml   一定要按以下连线的方式配置,很多初学者会出错

 

 

配置完就可以用启动测试工程了

Run as ---Android Junit Test  (注意这里需要选 Junit)

 

 

如果首次运行 AndroidManifest.xml  出现错误提示时只需要在Eclipase 中执行清空工程即可

如果一切顺利的话画面就是这样的

 

 

 

 

针对上面这个测试类中的部分方法稍作解释

 

 

 

 

 

方式2 (无源码的测试, 自学的同仁主要是以这种方式为多,拿不到工程源代码)

   

先按上面APK 所述对APK  重签名并将APK 安装到手机

 

新建测试工程

 

 

 

 

 

没有源码的就需要选择 This  Project  

 

 

 

点完成

 

 

获取安装包名与Activity 方式

 方式一如上面重签名所述用RE-SIGN.JAR 获取

 

 

  另外一种方式用命令方获取

 

Aapt dump badging xxxx.apk

 

 

第一个框为包名

第二个框为主Activity 名

 

 

如果取包名与Activity 在命令行中不方例还可以用以下方式获取

 

Aapt dump badging xxxx.apk  >c:\apk.txt

 

之后打开c:\apk.txt

 

 

 

修改测试工程中的AndroidManifest.xml

 

 

在com.ganji.test 包名下新建一个测试类

 

最基本的一个测试类应按如下格式编写

 

 

首先必须继承ActivityInstrumentationTestCase2

其次Activity  必须与被测应用Activity 相同

第三就是必须有一个

setUp  tearDown 方法

第四所有正式的测试方法必须以test 开头

 

 

在测试工程新建Lib 目录 并复制相应jar 包到lib 目录下

导入jar 到工程

在Order and Export 中选中新加入的jar 并打 V

 

 

 

 

 

 

   

 

 

由于Robotium 定位是基于控件的,如果要对控件进行操作必须先找到元素的定位方式

 

8 控件定位方式

 

 

元素获取可以Android\tools 目录下的hierarchyviewer.bat 

在模拟器中启动被测APP

双击hierarchyviewer.bat

 

先选中高亮的部分---再点Load View Hierachy

 

 

加载之后画面会是这样

 

 

 

 

 

 

9.脚本编写

 

用例1:

选择人才简因库 -à -- 返回

 

 

 

 

测试代码

 

 

 

用例2

 

依次点击首页下方五个按键(此处采用遍历的方式进行)

 

 

 

10 常用控件使用举例

 

 

 

 

 

 

 

 

 

11  Solo 源码解释

 

APP  本身的元素定位及操作源码

 

下面以点击操作为例

首先在Solo 类中找到以下方法(点击按键操作)

public void clickOnButton(String text) {

                        clicker.clickOn(Button.class, text);

}

 

接下来我们看下clicker 类

 

 

 

 

 

 

 

 

网页元素定位定位及操作源码 (网页部分元素定位底层主要是采用JS  注入定位)

 

 

首先我们在Solo 类中找到以下方法

public void clickOnWebElement(By by, int match){

                        clicker.clickOnWebElement(by, match, true);

            }

在clicker 类中调用了ClickOnWebElement 方法

 

 

这个方法获取控件时又调用了waiter 中的waitForwebElement 方法

 

waitForwebElement  方法又调用了searcher.searchForWebElement

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 Log 信息记录与查看

 

在这里采用Android.Util.log

Log记录编写格式:

其中TEST  字符可以自已任意定义

Log.i("TEST", "显示的信息");

Log.v("TEST", "显示的信息");

Log.e("TEST", "显示的信息");

Log.d("TEST", "显示的信息");

 

Log 打印输出

在命令提示符下输入chcp 65001 (让命令提示符下支持显示中文字符);

 

 

 

输入adb shell logcat –s TEST 即可看到log 信息

 

 

 

 

 

13常用方法二次封装

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14  WAP  抓包工具的使用

WAP  网页元素的获取(在不清楚应用主机时需要用抓包工具获取主机地址)

此处采用Fiddle 抓包软件

1: 下载并安装Fiddle (全采用默认安装即可)

2: Fiddler 开启远程连接。Fiddler 主菜单 Tools -> Fiddler Options…-> Connections页签,选中Allow remote computers to connect。

 

3:重启Fidler(这一步很重要,必须做)。

4:获取PC的IP地址:

在开始---运行— 输入CMD

在命令提示符下输入ipconfig

 

记录自已电脑的IP 地址,在手机端设置是会用到
设置手机代理:

 

需要手机和安装 Fiddler 电脑在同一WIFI下,手机连接到WIFI。打开手机的WIFI设置界面,选中连接的WIFI,长按,弹出如下界面,选择“修改网络”。

 

 

 

代理验证

在命令提示符下输入 telnet 主机IP 空格 端口号,

 

 

 

代理设置Ok 界面会是这样

 

此时可以在手机上操作观察Fiddle 的信息

在host 栏可以看到訪问的主机,之后在浏览器中输入对应的网址就可以用Firebug 获取控件元素了

 

 

 

 

金阳光自动化资料+视频:

  1. 官网:http://www.goldensunshine.cc/
  2. 关注官方新浪微博:金阳光woody
  3. 百度搜:金阳光测试,找到金阳光老师视频
  4. 更多最新视频在qq群:212260449更新
  5. 资料csdn博客:http://blog.csdn.net/haorenmin2008
  6. 金阳光微信公众账号:搜索金阳光自动化

 

posted @ 2016-03-03 16:12  小蚂蚁zoe  阅读(1963)  评论(0编辑  收藏  举报