• 手把手教你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:xxxandroidJavajdk1.6.0_03jre

    随口说一句: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的例子,我都一起打包,提供给大家下载试试吧。

  • 相关阅读:
    258. Add Digits 数位相加到只剩一位数
    7. Reverse Integer 反转整数
    9. Palindrome Number 回文数的判断
    824. Goat Latin山羊拉丁文
    819. Most Common Word 统计高频词(暂未被禁止)
    Angular 2 模板语法
    HTML DOM Style opacity 属性
    Basic concepts (C language) – C 中文开发手册
    JavaScript手册 | JS Array 对象中的fill()方法
    HTML <form> 标签
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/4032080.html
Copyright © 2020-2023  润新知