- 浏览: 1152218 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
MyEyeOfJava:
产生问题的主要原因:1.方洪波与南枫公司的直接主管李琼在合作共 ...
人力资源管理案例-左右为难的经理 -
吾名长弓:
学习了,作为一个管理新手,从文章里学到了很多东西,感谢 ...
2018新年管理感言 -
MyEyeOfJava:
非常不错,看过很多文章,说到管理者必然不能抛弃技术,我的主张是 ...
IT行业技术部门人员架构设计 -
小灯笼:
JMeter测试从入门到精通网盘地址:https://pan. ...
LR与Jmeter相关资料 -
flying6071:
“(2)CERT.SF:这是对摘要的签名文件。对前一步生成的M ...
Android签名与认证详细分析之一(CERT.RSA剖析)
1.MonkeyRunner自动化遇到的问题
一、元素坐标不好定位
二、不利于代码复用
三、出现问题不好调试
四、无封装大量多余代码
针对以上四点问题,尝试了一些自动化测试框架,虽不尽如意,但是也把成果展示如下:
1.制作一个应用,该应用可以得到你应用上所点击的IP
实例:
结果导出:
若运行时传入-o参数,则会将结果存入指定文件:
支持的Event:
此应用只适合于拥有ID的应用,本人所在公司的APK大多数都是没有ID的都是动态生成的,所以此法不太适用。
2.若你的应用拥有大多数ID,那么可以进行第二步,此框架可以根据ID获取该元素在布局中的坐标位置(X,Y)
其中example为例子,src中是对布局树的解析以及封装,此框架可以配合python的UnitTest进行适用
3.调式的问题,若你的第2部也已经完成,那么可以导入python的logging来进行log解析,而且可以把项目导入到Eclipse中进行调式,此处唯一需要注意的是,python的解释拦截器转为monkeyrunner即可
4.另附带1个MonkeyRunner脚本
查看设备是否连接上了,查看sdcard是否满了,查看内存以及cpu的使用情况,当不能截图时是否抛出异常,如果有是否能够捕捉的到
有一种是设备断开了 kill后重启都不管用只能拔掉数据线重来,操作又不知道到哪一步了,不好保存操作的步骤。
还有一种是超时,com.android.ddmlib.TimeoutException,请问这种情况我该怎么捕捉这个异常,每个操作都去捕捉的话,脚本会很冗长啊……
查看设备是否连接上了,查看sdcard是否满了,查看内存以及cpu的使用情况,当不能截图时是否抛出异常,如果有是否能够捕捉的到
adb logcat
打开你的应用程序,然后你就看到相关的日志了,那里面有这个值
没有ID,现在也只能用坐标,在android4.0平台上,可以很轻松地知道每个位置的坐标。
公司内部框架,不好意思暂时只对外公开实现机制以及思路
一、元素坐标不好定位
二、不利于代码复用
三、出现问题不好调试
四、无封装大量多余代码
针对以上四点问题,尝试了一些自动化测试框架,虽不尽如意,但是也把成果展示如下:
1.制作一个应用,该应用可以得到你应用上所点击的IP
$ ./andrec --help Usage: andrec [options] apkfile Options: --version show program's version number and exit -h, --help show this help message and exit -a ANDROID_SDK, --android-sdk=ANDROID_SDK android sdk path -i, --interact run in jdb interact mode -p PORT, --port=PORT local debug port -o OUTPUT, --output=OUTPUT output file -v, --verbose print verbose info
实例:
$ ./andrec TestRecord.apk preparing apk... installing apk... starting... connecting debugger... start recording... click com.example.R.button1 click com.example.R.submit click com.example.R.button2 click item 2 in view -1 show menu for item 4 in view -1 click menu item "Edit" show menu for item 5 in view -1 click menu item "Delete" click item 18 in view -1 back pressed show menu click menu item "New game" show menu click menu item "Help" back pressed ^C
结果导出:
若运行时传入-o参数,则会将结果存入指定文件:
$ ./andrec -o test TestRecord.apk . . . ^C $ cat test {"type": "click", "target": "com.example.R.button1"} {"type": "click", "target": "com.example.R.submit"} {"type": "click", "target": "com.example.R.button2"} {"position": 1, "type": "click", "target": -1} {"position": 3, "type": "menu", "target": -1} {"content": "\"Edit\"", "type": "click"} {"position": 5, "type": "menu", "target": -1} {"content": "\"Delete\"", "type": "click"} {"type": "back"} {"type": "menu"} {"content": "\"New game\"", "type": "click"} {"type": "menu"} {"content": "\"Help\"", "type": "click"} {"type": "back"}
支持的Event:
class Recorder(object): def click(self, view): print 'click', view def change_text(self, view, text): print 'text in view', view, 'changed to', text def click_list_item(self, view, position): print 'click item', position, 'in view', view def show_list_item_context_menu(self, view, position): print 'show menu for item', position, 'in view', view def show_menu(self): print 'show menu' def click_menu_item(self, text): print 'click menu item', text def back(self): print 'back pressed'
此应用只适合于拥有ID的应用,本人所在公司的APK大多数都是没有ID的都是动态生成的,所以此法不太适用。
2.若你的应用拥有大多数ID,那么可以进行第二步,此框架可以根据ID获取该元素在布局中的坐标位置(X,Y)
其中example为例子,src中是对布局树的解析以及封装,此框架可以配合python的UnitTest进行适用
3.调式的问题,若你的第2部也已经完成,那么可以导入python的logging来进行log解析,而且可以把项目导入到Eclipse中进行调式,此处唯一需要注意的是,python的解释拦截器转为monkeyrunner即可
4.另附带1个MonkeyRunner脚本
# coding=UTF-8 import time import string import random import os from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice device = MonkeyRunner.waitForConnection(61) device.wake() ImagePath="/home/eamon/tmp_tmp/" device.removePackage("cn.opda.a.phonoalbumshoushou") device.installPackage("DXAndroidOptimizer_DXD_2.6.0.425.apk") time.sleep(5) device.startActivity(action='android.intent.action.MAIN',component='cn.opda.a.phonoalbumshoushou/cn.com.opda.android.mainui.MainActivity') time.sleep(10) #进入功能列表 device.drag((110,400),(10,400),0.1,5) time.sleep(5) device.touch(90,140,MonkeyDevice.DOWN_AND_UP) time.sleep(2) device.touch(160,240,MonkeyDevice.DOWN_AND_UP) time.sleep(5) device.takeSnapshot().writeToFile(ImagePath+"cpu.png","png") device.press("KEYCODE_BACK",MonkeyDevice.DOWN_AND_UP) time.sleep(5) device.touch(160,300,MonkeyDevice.DOWN_AND_UP) device.takeSnapshot().writeToFile(ImagePath+"memory.png","png") device.press("KEYCODE_BACK",MonkeyDevice.DOWN_AND_UP) #功能验证界面 device.touch(200,160,MonkeyDevice.DOWN_AND_UP) time.sleep(5) device.takeSnapshot().writeToFile(ImagePath+"functionCheckButton.png","png") time.sleep(5) device.touch(160,240,MonkeyDevice.DOWN_AND_UP) time.sleep(5) device.takeSnapshot().writeToFile(ImagePath+"functionBlack.png","png") time.sleep(5)
- OpdaTest.zip (41 KB)
- 下载次数: 160
- andrec.zip (7.5 MB)
- 下载次数: 94
评论
10 楼
a455642158
2013-01-07
MyEyeOfJava 写道
a455642158 写道
脚本运行一段时间后会提示Unable to take snapshot,该怎么在脚本里监听并且解决呢……
查看设备是否连接上了,查看sdcard是否满了,查看内存以及cpu的使用情况,当不能截图时是否抛出异常,如果有是否能够捕捉的到
有一种是设备断开了 kill后重启都不管用只能拔掉数据线重来,操作又不知道到哪一步了,不好保存操作的步骤。
还有一种是超时,com.android.ddmlib.TimeoutException,请问这种情况我该怎么捕捉这个异常,每个操作都去捕捉的话,脚本会很冗长啊……
9 楼
MyEyeOfJava
2012-12-27
a455642158 写道
脚本运行一段时间后会提示Unable to take snapshot,该怎么在脚本里监听并且解决呢……
查看设备是否连接上了,查看sdcard是否满了,查看内存以及cpu的使用情况,当不能截图时是否抛出异常,如果有是否能够捕捉的到
8 楼
a455642158
2012-12-26
脚本运行一段时间后会提示Unable to take snapshot,该怎么在脚本里监听并且解决呢……
7 楼
MyEyeOfJava
2012-10-28
178890290 写道
你好,请教下:
device.startActivity函数里的action和component的值的根据什么来确定的。
一直没找到打开应用程序的命令。
device.startActivity函数里的action和component的值的根据什么来确定的。
一直没找到打开应用程序的命令。
adb logcat
打开你的应用程序,然后你就看到相关的日志了,那里面有这个值
6 楼
178890290
2012-10-27
你好,请教下:
device.startActivity函数里的action和component的值的根据什么来确定的。
一直没找到打开应用程序的命令。
device.startActivity函数里的action和component的值的根据什么来确定的。
一直没找到打开应用程序的命令。
5 楼
htdx0101
2012-08-21
有密码,让下载个JB啊。
4 楼
MyEyeOfJava
2012-08-14
gxy781895802 写道
如果没有ID 都是代码动态生成的话,那该怎么测才好呢?
没有ID,现在也只能用坐标,在android4.0平台上,可以很轻松地知道每个位置的坐标。
3 楼
gxy781895802
2012-08-13
如果没有ID 都是代码动态生成的话,那该怎么测才好呢?
2 楼
MyEyeOfJava
2012-07-16
rollerxlz 写道
怎么还有密码呀?能不能告诉密码?
公司内部框架,不好意思暂时只对外公开实现机制以及思路
1 楼
rollerxlz
2012-07-16
怎么还有密码呀?能不能告诉密码?
发表评论
-
[ATC]Facebook开源弱网模拟工具
2016-03-26 14:24 2716需要注意如下:1.笔者使用了linux USB网卡,是让 ... -
【远程真机管理】openstf
2016-03-24 11:36 2927网站地址:https://github.com/ope ... -
AndroidStudio性能优化
2016-03-15 16:39 1148Android Studio慢、吃内存!启动时后会立即通过Gr ... -
Drozer使用手册
2016-01-18 15:22 2231Drozer ⼯具的安装与启动:源码地址(https:// ... -
TCPDUMP抓包
2015-12-17 20:56 783tcpdump 使用方法:唯有使用文章描述的参数移动手机的 ... -
HTML5安全
2015-10-30 19:43 1320移动安全问题汇总:htt ... -
Android插件DSL配置文档
2015-07-29 15:54 1026Android Plugin DSL Reference -
Gradle-Android打包文档
2015-07-29 15:29 1821http://tools.android.com/tech- ... -
Android性能优化典范(一)
2015-06-02 17:26 13162015年伊始,Google发布 ... -
Android性能系列-电量篇
2015-05-29 16:28 1346电量篇 1) Understanding Battery ... -
Android性能系列-内存篇
2015-05-29 16:27 825内存篇 1) Memory, GC, and Perfor ... -
Android性能系列-运算篇
2015-05-29 16:26 581运算篇 1) Intro to Compute ... -
Android性能系列-渲染篇
2015-05-29 16:25 836Google近期在Udacity上发布了Android性能优 ... -
如何通过wifi在android手机上安装调试应用
2015-05-29 14:42 7031. 首先还是要打开手机 ... -
[Android]解决android65K方法引用限制
2015-01-14 11:39 1626解决方案如下: 1.Google官方的andr ... -
[Android]获取整体APP CPU信息
2015-01-07 14:34 4793通过proc获取CPU信息。adb shell cat / ... -
genymotion-安卓模拟器-IMEI修改方法
2015-01-05 15:44 4416看淘宝动辄就几十元卖这么个破玩意儿,实在是懒得说什么了,人总 ... -
[android]创建固定大小文件
2014-12-29 19:27 2207dd if=/dev/zero of=yourfile ... -
[总结]无线测试
2014-12-18 16:33 1145本文主要介绍测试在项目的各个阶段应该要做的事情、使用的工具和 ... -
[适配性]移动Webapp自适应方案
2014-12-18 16:15 1871此次方案的优化点 页面元素会随宽度的变化而自适应的放大 ...
相关推荐
MonkeyRunner是Android SDK提供的一种工具,用于编写和执行对Android设备或模拟器的自动化测试。这个工具通过Python脚本来控制设备,进行各种用户交互,如点击、滑动、输入文本等,从而实现对应用程序的系统级测试。...
在Android平台上,自动化测试是确保应用质量和性能的关键环节。本文将详细介绍几个常见的自动化测试框架,包括Monkey、...在Android自动化测试领域,结合使用这些工具和框架,可以构建全面而强大的测试方案。
### Android自动化测试工具monkeyrunner详解 #### 一、Monkeyrunner简介 Monkeyrunner是Android平台下的一款强大的自动化测试工具,主要用于实现对Android设备或模拟器的功能性测试和稳定性测试。通过编写Python...
在Android自动化测试中,JUnit和Espresso是最基础的测试框架。JUnit是一个流行的Java单元测试框架,常用于测试应用的后台逻辑。Espresso则专为Android UI测试设计,它提供了一套强大的API,使得测试人员可以精确地...
这篇原创的博文——"[android]am自动化测试框架"探讨了如何利用`am`命令来构建一个高效的自动化测试解决方案。 `am`命令行工具允许开发者执行各种操作,如启动应用、发送广播、启动服务等,这对于测试场景的模拟和...
【Android自动测试之monkeyrunner工具】是Android平台上用于自动化测试的一种工具,它提供了一套Python API,使得开发者能够在PC上编写脚本,控制Android设备或模拟器进行测试操作。Monkeyrunner不仅适用于应用的...
针对现有的自动化测试工具存在的局限性,研究者认为有必要提出一种更完善的测试框架,优化Android自动化测试工具。而提出的UI自适应的Android软件自动化测试框架,能够在识别被测软件的UI控件和布局后,自动生成适应...
lowen 基于monkeyrunner的android应用的自动化测试,并输出测试结果到html的框架 仿腾讯utest测试框架 代码有待完善,欢迎有兴趣的朋友一起讨论(目前报表里面使用echarts部分没有写数据处理逻辑,框架已搭好) ...
总的来说,Android自动化测试通过各种工具和框架,如Robotium、UI Automator和Appium,可以帮助开发者高效、准确地测试应用,确保软件的质量和稳定性。在选择和实施自动化测试策略时,需要根据项目需求、团队技能和...
这篇博客"[android]android自动化测试九之monkeyRecord"可能详细探讨了如何使用MonkeyRecord进行自动化测试。 MonkeyRecord结合了Monkey和MonkeyRunner工具的优点,Monkey是用来向Android应用发送随机事件流,而...
本文的研究目标是利用现有的开源工具和框架,研究Android应用程序的并行自动化测试技术,通过多台设备根据测试脚本进行并行测试,旨在缩短测试时间,降低测试成本,提高测试的准确性和效率。 在自动化测试技术方面...
Monkey和Monkeyrunner是Android自动化测试中的两个重要工具,主要用于对应用程序进行压力测试和自定义脚本测试。在本文中,我们将深入探讨这两个工具的基本概念、使用方法和相关资源。 Monkey是Android SDK自带的一...
### Android自动化测试及其工具——SmartRobot详解 #### 一、Android自动化测试概述 随着移动互联网技术的迅猛发展,Android操作系统已成为智能手机市场的主导力量之一。为了确保Android应用的质量和稳定性,自动...
6. UI自动化测试:如UI Automator,它是Android提供的一个跨应用的UI测试框架,可以测试非应用程序组件,如系统对话框。 7. 功能测试和端到端测试:例如Detox(React Native)和Cypress(Web和混合应用)用于模拟...
最后,对于Android自动化测试的全系列课程,包括了多个内容方向,例如系统级白盒测试及自动化测试集成、Monkey、MonkeyRunner、UiAutomator和appium等,从核心理念、操作指南到实战技巧,再到电量测试、弱网测试和...
Android自动化测试就是利用特定的工具和框架,自动执行预先设定好的测试脚本,以检查应用程序的功能、性能和稳定性。其中,`MonkeyRunner` 是Android SDK提供的一款强大的自动化测试工具,它允许开发者通过编写...