MonkeyRunner的使用二
MonkeyRunner可以用来做自动化测试,在Android中做动态分析的时候也可以使用它来做行为触发。
不过感觉使用MonkeyRunner来做行为触发还是很局限的。就比如我想实现外界向模拟器拨打电话,或者是发送短信就很难。
如果有好的方法,希望您能告诉我。(已解决,可以移步到脚本实现模拟拨打电话,发送短息等)
在Android的管网上介绍了可以使用MonkeyRunner来启动APK ,但是前提是必须是你要知道要启动的APK的包名和Activity名。
想要启动任何未知的Activity怎么办呢。就比如说,你要在模拟器上安装一个你不知到的APK ,怎么来启动它。
这里用到了Apktool.
1.使用Apktool来反编译我们的目标文件
将APK反编译之后,可以在得到的文件夹下找到AndroidManifest.xml文件
这个时候使用Python来提取出包名和类名,保存在两个文件夹里面。
为什么要怎么做,因为启动MonkeyRunner 的命令是MonkeyRunner -v ALL xxxx.py
我们要想办法传入未知的包名和Activity怎么做,只有通过使用文件的读写操作来达到互动。
2.获取任意程序的包名和Activity的名字。
#
# @author : grace
# @date : 2013-5-26
# filename : parseManifest.py
# run : python parseManifest.pyimport os
import sys
from xml.dom import minidomif __name__ == "__main__":opts, args = getopt.getopt(sys.argv[1:], "d:h", "directory = help")for op, value in opts:if op in ("-d","--directory"):_directory = valuexmldoc =minidom.parse(_directory + '/AndroidManifest.xml')manifest = xmldoc.getElementsByTagName('manifest')[0]package = manifest.getAttribute('package')getActivity = xmldoc.getElementsByTagName('activity')[0]activity = getActivity.getAttribute('android:name')output = open(_directory + 'package.txt','w')
output.write(package)
output.close()output = open(_directory + 'activity.txt','w')
output.write(activity)
output.close()
上面这个程序的代码是用来解析AndroidManifest.xml的,通过这个程序来获得包名和Activity 的名字,将他们分别存储在package.txt 和activity.txt 文件中
这里我们只保存了一个 ,因为只下需要一个Activity就可以启动我们的APK。
3.接下来就是通过MonkeyRunner 来做行为触发
#
# @author : grace
# @date : 2013-5-25
# filename : behaviorTrigger.py
# run : monkeyrunner -v ALL behaviorTrigger.py
#from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImagepackage = ''activity = ''fp = open("package.txt")
package = fp.readline()
fp.close()fa = open("activity.txt")
activity=fa.readline()
fa.close()device =MonkeyRunner.waitForConnection()MonkeyRunner.sleep(1)runComponent = package + '/' + activityaction = 'android.intent.action.MAIN'device.startActivity(action = action, component = runComponent)MonkeyRunner.sleep(2)res=device.takeSnapshot()res.writeToFile( '/shot1.png','png')device.touch(160,194,MonkeyDevice.DOWN_AND_UP)res=device.takeSnapshot()res.writeToFile( '/shot2.png','png')device.touch(160,374,MonkeyDevice.DOWN_AND_UP)device.touch(160,194,MonkeyDevice.DOWN_AND_UP)res=device.takeSnapshot()res.writeToFile('/shot3.png','png')device.touch(60,200,MonkeyDevice.DOWN_AND_UP)MonkeyRunner.sleep(1)device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)
注意文件存放的位置应该是你用apktool 反编译之后的文件夹下面
apktool d XXXX.APK 文件夹名称
MonkeyRunner的使用二相关推荐
- 【转】monkeyrunner学习总结二:连接、安装、启动
一.获取packageName与startActivity 前置条件:已成功安装配置SL4A并连接PC调试(参见:monkeyrunner学习总结一:环境搭建:http://www.amsoft.cn ...
- 转 Android自动测试之monkeyrunner工具(二)
monkeyrunner工具 前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyru ...
- monkeyrunner使用
monkey和monkeyrunner都是android sdk提供的测试命令,但monkeyrunner和money没有什么直接的关系,monkey是在设备直接运行adb shell命令生成随机事件 ...
- python屏幕录制与回放_monkeyrunner之录制与回放(七)
monkeyrunner为我们提供了录制 回放的功能. 录制与回放使用原因:实际项目,需求变更频繁,且测试任务多,我们没有足够时间去写测试脚本,这是就可以进行录制脚本,然后通过回放,跑完需要的流程. ...
- python runner功能_Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)...
简介 看<西游记>第五十七回,说是"六耳猕猴"化作孙悟空的摸样,伤了唐僧,后又和孙悟空大打出手-- 这位假孙悟空,实力不用多说了吧,和真孙悟空一般无二,大战孙悟空,闹到 ...
- Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)...
简介 看<西游记>第五十七回,说是"六耳猕猴"化作孙悟空的摸样,伤了唐僧,后又和孙悟空大打出手-- 这位假孙悟空,实力不用多说了吧,和真孙悟空一般无二,大战孙悟空,闹到 ...
- monkeyrunner之夜神模拟器的安装与使用(二)
在上一篇文章-安卓开发环境搭建中,我们创建并启动了eclipse自带的安卓模拟器,该模拟器不仅启动慢,而且在使用过程中的反应速度也是出奇的差,经常出现卡机现象.为了解决这种现象,因此,我们又寻找到了更 ...
- Android自动化测试 - MonkeyRunner(二) 锤子便签测试脚本
来源于:http://testerhome.com/topics/878 1 # encoding=utf-8 2 3 4 #导入python中自带的time模块和sys模块,脚本中都要用到它们. 5 ...
- MonkeyRunner——如何在实体机上启动一个程序
闲来无事,研究了下MonkeyRunner调试实体机.之前JDK,Python,SDK,MonkeyRunner环境都已配置完毕,这里就不一一详述了. 一)启动MonkeyRunner并连接设备: 打 ...
最新文章
- day3-python学习笔记(三)字典、元组
- unity vscode没有智能提示_GAMES101课程环境搭建(Win10+VSCode)
- gdal java api_Java使用GDAL库
- 惠普第八代游戏家族产品重磅首发,搭载英特尔第十二代酷睿处理器
- 心语收集14:人生没有如果,但是有很多但是;人生不能后悔,但是可以拐弯。...
- Java运行时数据区域
- 组策略不让你登陆你怎么办
- noip模拟赛 czy的后宫
- 从零开始搭建ABP框架(Asp .Net Boilerplate)+Oracle(11 g)
- 「目标检测算法」连连看:从Faster R-CNN 、 R-FCN 到 FPN
- 清除此计算机中wps云盘,Win10专业版系统怎么把电脑上的WPS网盘彻底删掉?
- oracle触发器和包,Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)
- 解决win10家庭高级版切换到Administrator用户后无法切换回原账户问题过程记录
- rabbitmq消息发送与接收stomp通道测试
- 数据库-音乐网站-sql
- Vue解决跨域多个target问题(配置多个代理问题)
- 磁盘主分区转换为逻辑分区
- 芮瑶学编程05-画七彩虹
- 读我(Readme)
- 第一章 README
热门文章
- 腾讯二面:@Bean与@Component用在同一个类上,会怎么样?
- 我用分布式事务干掉了一摞简历
- 阿里某P5程序员求助:跟女票要结婚,她家要50万彩礼,女票爸爸说钱不够可以先欠着,这婚能结吗?欠条以后能赖吗?...
- 【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??
- AQS基础——多图详解CLH锁的原理与实现
- 朋友问我学习高并发需不需要阅读源码,我是这样分析的!!
- Hadoop数据收集与入库系统Flume与Sqoop
- 24 个必须掌握的数据库面试问题!
- 基于机器学习的入侵检测系统
- 绝对干货:19个有用的基于云的Web开发工具