一、                      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. 金阳光微信公众账号:搜索金阳光自动化

robotium学习及整理的更多相关文章

  1. UWP学习目录整理

    UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...

  2. iOS 开发学习资料整理(持续更新)

      “如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿   iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...

  3. DBN 入门学习资料整理

    建议按序阅读 1.Deep Learning 概述 Deep Learning(深度学习)学习笔记整理系列 : http://blog.csdn.net/zouxy09/article/details ...

  4. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  5. iOS 学习资料整理

    iOS学习资料整理 https://github.com/NunchakusHuang/trip-to-iOS 很好的个人博客 http://www.cnblogs.com/ygm900/ 开发笔记 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Git学习资料整理

    Git作为一个优秀的版本控制系统,是我们开发人员必须要学会使用的一个工具,接触git一年多以来,也看了不少相关资料,今天把我所看过的一些学习资源整理一下. Git入门当然首推廖雪峰廖老师的教程:Git ...

  8. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. OpenStack入门篇(二十)之实现阿里云ESC多FLAT网络

    1.给两台虚拟机增加网卡,使用仅主机模式,网段为:192.168.57.0/24 2.修改两台主机网卡配置 [root@linux-node1 ~]# cp /etc/sysconfig/networ ...

  2. Python抓取歌词自制FreeStyle

    故事的起因是上周六看<中国好声音>,一个周杰伦战队的学员用人工智能写的歌词,于是乎,我也有了这个想法,代码的主题思路是看Crossin先生的文章,虽然最后不能写出一首歌,但是押韵脚这事情分 ...

  3. 深入浅出js中的this

    Q:this是什么? A:this是Javascript语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,在每个 function 中自动根据作用域(scope) 确定, 指向的是此次调用者 ...

  4. 使用VMWareWorkstation10搭建学习环境笔记

    第一节:介绍虚拟化技术 虚拟化技术1.在一台计算机运行多个操作系统2.教学环境 测试环境3.和硬件无关4.P to V   物理机->虚拟机(Physical to Virtual)    V ...

  5. cpp-variable-lifetime

    #include <cstdio> #include <iostream> using namespace std; class TmpClass; void FuncScop ...

  6. 《数据结构与算法图解》 分享 pdf下载

    链接:https://pan.baidu.com/s/1gOMlwU5ucHYDVazvVMk2uw提取码:bk5x

  7. Datawhale MySQL 训练营 Task4 表联结

    学习内容 MySQL别名 列别名,将查询或者筛选出来列用AS 命名,如果有空格则需要引号 '' SELECT xxx AS xxxx FROM WHERE GROUP BY HAVING 表别名, 把 ...

  8. 32bit 天堂2 windows 2003 server架设教程

    安装环境::[注意:本教程newauth要用不加密的版本] windows 2003 enterprise server 100用户license Microsoft sql server 2000 ...

  9. 用EXCEL批量更改文件名,一个命令就能完成

    工作任务:学籍库里需要更新和完善学生信息,其中有一项工作就是要导入以身份证号为文件名的学生照片,而目前各个班级提交的学生照片是以学生姓名命名的.如何将学生姓名批量转换成身份证号码呢? 解决方案:用EX ...

  10. 基于KVM的H3C云计算平台CAS运维经验