robotium学习及整理
一、 Robotium 简介
Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长 按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测 试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。
Robotium 核心类是Solo 通过Solo 类可以对控件进行各种操作
Robotium 官网:
Robotium 中文官网
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: 打开站长工具网站
选择其它工具—超级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 获取控件元素了
金阳光自动化资料+视频:
- 官网:http://www.goldensunshine.cc/
- 关注官方新浪微博:金阳光woody
- 百度搜:金阳光测试,找到金阳光老师视频
- 更多最新视频在qq群:212260449更新
- 资料csdn博客:http://blog.csdn.net/haorenmin2008
- 金阳光微信公众账号:搜索金阳光自动化