手把手教你ranorex_android自动化测试第一个示例
要说android的自动化,那真是折腾死我了,从早期的monkeyrunner,到后来的robotium,再到最新的uiautomator,各有各的问题,总之性价比都不够高,不太适合我的使用场景。于是不愿意将研究结果投入实践,一直等待。今年的适配问题越发突出,再不自动化,回归就该搞死人了。
于是最后研究比对instrumetation和uiautomator,终于确定了uiautomator方案,其实也是勉为其难,不过总算也是可以实现的。先准备好脚本,批量修改了所有布局文件,增加了contentDescription属性,少许的动态生成的布局,可以在开发配合下代码中增添,到时候提交到svn,以后再有新模块,都要求增加该属性,提交给测试增加自动化测试模块就可以了。
不过需要通过sdk的tools目录下的uiautomatorviewer.bat(管理员权限运行),查看界面元素,然后一一引用并进行操作,一是需要开发的大力配合,二是全都要一点点自己写,三是需要编译成jar包,push到手机上才能运行,也就是说只能通过日志暴力调试。
峰回路转,本来是有项目找方法测试C#的WPF,在搞定了这事以后,发现ranorex还可以测试ios和android程序,大喜之。于是试了试,发现可以和最传统的自动化测试工具一样进行对象识别,录制和回放,真是大爽呀。(事后经过测试,发现不适合我,因为ranorex和robotium一样,不可以跨应用,只能用回uiautomator解决方案)
整个步骤大致是:
1. Instrument源代码,编译出一个可测版本(这个我回头单独写一章,如何进行instrument源码);
2. 创建一个android的测试项目;
3. 连接上手机,手机上会安装一个service;
4. 部署之前编译的可测试apk到手机上;
5. 录制,回放。
这个东西很好的一点是使用的instrument,也就是说他不是从一个孤零零的apk外围做的,而是直接从源码装hook,那要访问到程序的任何东西都可以了。这样就不担心google有一天对外关闭大门,instrumentation可是他自己的东西。
先说创建项目吧:
001.png

002.png

Module和advanced里面可以创建cmd控制台程序,也可以创建测试的模块库,还可以创建窗体程序,我就缺省选择了Testsuite
003.png

创建完以后就这个样子了。
不管三七二十一,直接开始录制:
004.png

005.png

这里的apk是将源码处理过的,其实deploy的时候勾选上instrument就可以了,不过我还是细细说说instrument的细节吧。参考:手把手教你ranorex_android源码instrument
006.png

提示JRE1.6 not found:
填写JRE的目录:
C:\xxx\android\Java\jdk1.6.0_03\jre
随口说一句:Jre就是java程序的运行环境;jdk是你做java开发的那套东西。
007.png

出错:
008.png

1. 检查apk是否混淆(obfuscated)
2. 必须使用api8以上版本,也就是sdk2.2以上版本;
3. 手机上是否安装了一个没有instrumented的版本
依次检查发现都没有问题,仔细一看,我倒,怎么手机连接是个叉叉,于是删除手机重新添加,于是就大功告成了。
所以别以为选择上了设备就可以,要随时留心检查一下设备状态是钩钩还是叉叉:
009.png

在deploy apk之前手机上会先启动一个服务:
010.png

这个样子就是安装成功了:
011.png

点开服务界面中的那个被测程序,会看到一个toast提示:ranorex connected
在ranorex上打开view spy
012.png

013.png

所有的对象都被识别出来了,要知道引用方式,只需找到对象然后点击一下track,爽吧。
然后在
014.png

对象库中(这个例子是TandroidRepository.cs)中可以看到引用到的界面元素,录制的操作在Recording1.cs(这个文件头部分强调: // DO NOT MODIFY THIS FILE! It is regenerated by the designer. ),不过没关系,还有Recording1.UserCode.cs,你的代码可以写在这里,把录制的代码拷贝来改巴改巴就可以用了。
好了,这个ranorex工程和android的例子,我都一起打包,提供给大家下载试试吧。
手把手教你ranorex_android自动化测试第一个示例的更多相关文章
- 手把手教你接口自动化测试 – SoapUI & Groovy
手把手教你接口自动化测试 – SoapUI & Groovy http://www.cnblogs.com/wade-xu/p/4236295.html 关键词:SoapUI接口测试,接口自动 ...
- 手把手教你接口自动化测试 – SoapUI & Groovy【转】
手把手教你接口自动化测试 – SoapUI & Groovy Posted on 2015-01-21 09:38 WadeXu 阅读(12741) 评论(10) 编辑 收藏 手把手教你接口自 ...
- 手把手教你ranorex_android源码instrument
话说ranorex能把android程序看的透彻,关键是在潜伏,他使用instrumentation,在每个界面(activity)里面,准确的说是onresume,也就是页面显示的时候,都给安装了个 ...
- 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...
- 《手把手教你》系列技巧篇(五十九)-java+ selenium自动化测试 - 截图三剑客 -上篇(详细教程)
1.简介 今天本来是要介绍远程测试的相关内容的,但是宏哥在操作服务器的时候干了件糊涂的事,事情经过是这样的:本来申请好的Windows服务器用来做演示的,可是服务器可能是局域网的,连百度都不能访问,宏 ...
- 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...
- 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
随机推荐
- lucene Filter过滤器
摘自:http://iamyida.iteye.com/blog/2199368 1.TermFilter:就是按照Term去过滤,跟TermQuery类似: Filter filter = new ...
- SSD 和 SAS 意外造 raid 1
一台机器的磁盘更换后, 一个 SSD 和 一个 SAS 做了 raid 1 , 诡异情况,询问 IDC 同事中. 有可能是打开了 热备.
- redis12--常用API
上一篇总结我们使用我们本地的Eclipse中创建的jedis工程,链接到了我们处于VMware虚拟机上的Linux系统上的Redis服务,我们接下来讲一下jedis的一些常用的API.(1)jedis ...
- HDU2571 命运 动态规划
好久没更新博客了. 校内练习的一道水题 HDU2571 命运. 简单DP. 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫 ...
- javaWEB总结(11):JSP简介及原理
前言 本文主要通过一个简单小例子,介绍JSP的原理. 1.项目结构 2.web.xml <?xml version="1.0" encoding="UTF-8&qu ...
- CSS兼容的一些问题
DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV+CSS设计的网页,就应该更注意IE6 ...
- String类之indexOf--->查找某字对应的位置
以下方法都是java内置类String类的内置方法(不是构造方法哦,就是普通的方法),不需要我们写,直接拿过来用即可. indexOf方法对应Api介绍 lastIndexOf方法对应Api介绍 -- ...
- jQuery第六章
jQuery与Ajax应用 一.Ajax的优势和不足 1.Ajax的优势: (1)不需要插件支持:不需要任何浏览器插件就可以被绝大多数浏览器支持 (2)优秀的用户体验:能在不刷新整个页面的前提下更新数 ...
- C#数组和元组
声明数组 int[] myArray; 初始化数组 myArray = new int[4]; 数组是引用类型当初始化完毕后,将在托管堆上分配内存空间,其结构图如下
- Struts国际化
第一步需要建立配置文件 格式为 文件名_zh_CN.properties 为中文配置文件 文件名_en_US.properties为美式英语配置文件 配置文件里面的值以键值对的形式 ...