七、MonkeyRunner测试入门

移动端测试_MonkeyRunner

工具介绍

Monkey runner用于android系统自带的自动化测试工具,存在于android sdk中。Monkeyrunner提供了一套api,调用api编程可在android代码之外控制android设备和模拟器。通过monkeyrunner可以编写python程序去安装一个android应用程序或者去运行它,发送模拟按键,滑屏,输入字符,截屏保存图片等。MonkeyRunner是基于Jython(Jython为Java和python相互操作提供桥梁)

MonkeyRunner工具的设计目的:用于应用程序测试功能

Monkey和MonkeyRunner的区别:
1.Monkey工具主要是直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流,其支持的命令语句有限。2.MonkeyRunner采用客户端/服务器架构,运行在PC端,逐行解释Jython脚本代码,将其命令发送到Android设备或模拟器。

环境配置

1.正常部署Android环境(网上介绍android环境很多,不再重复)
2.Android sdk目录下tools文件夹包含monkeyrunner的批处理文件
3.正常安装python。并将python.exe的文件目录添加至系统环境变量。
参考:http://www.cnblogs.com/lynn-li/p/5885163.html

脚本录制

脚本源码:http://www.cnblogs.com/tester2test/p/4420056.html
步骤:
1.将脚本monkey_recorder.py置于android sdk下的tools目录。
2. 手机设备连接到电脑,可用adb devices进行查看
3.切换至sdk/tools目录,执行monkeyrunner monkey_recorder.py进行调用
4.界面左侧显示手机屏幕信息,右侧则对应的脚本代码信息。可直接在手机上进行各项操作,右侧会自动生成对应的运行脚本代码。

脚本回放

步骤:
1.下载回放脚本monkey_playback.py
2.通过命令“monkeyrunner monkey_playback.py” + “已保存的脚本录制文件路径及名称”

脚本编写

编写MonkeyRunner脚本主要用monkeyrunner.jar中的MonkeyRunner、MonkeyDevice和MonkeyImage类(com.android.monkeyrunner)。编写之前需要先导入这三个类。脚本编写完后,切换至android sdk/tools目录,执行monkeyrunner test.mr(脚本名)即可执行脚本。
MonkeyRunner
提供连接monkeyrunner到设备或者模拟器的方法
提供创建monkeyrunner程序的用户界面以及显示内置帮助的方法
MonkeyDevice 提供安装和卸载程序包的方法
提供启动一个活动(activity)的方法
提供发送键盘或触摸事件到应用程序的方法
可用于运行测试包
MonkeyImage 提供截图、将位图转化成各种格式的方法
提供比较两个MonkeyImage对象以及写图像到文件的方法。

实例:安装“SimpleApp.apk”应用,运行应用并截屏保存至D盘根目录,文件名为simp.png。
运行方法:
1.控制台输入monkeyrunner,在提示符下直接输入脚本语句运行
2编写一个python脚本,通过运行monkeyrunner +脚本名。在记事本中编写对应脚本,保存至sdk下的tools,文件名为test.mr,脚本如下:

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice,MonkeyImage  // 引入类
device = MonkeyRunner.waitForConnection()                             //等待连接设备
device.installPackage(‘D:\\AndroidProjects\\SimpleApp.apk’)				// 安装apk
MonkeyRunner.sleep(3)										// 等待3 S

device.shell(‘am force-stop simple.app.SimpleAppActivity’)          // 先关闭应用,防止已打开
MonkeyRunner.sleep(3)

device.startActivity(component=’simple.app/simple.app.SimpleAppActivity’)   // 启动SimpleAppActivity
device.drag((288,204),(288,1024),3,1)			// 滑屏解锁操作,针对具体的手机设备使用
MonkeyRunner.sleep(3)

result = device.takeSnapShot				// 截屏并保存图片
result.writeToFile(‘d:\\simp.png’, ’png’)

常用脚本

常用键码如下,
键功能 键值码 键功能 键值码
菜单键 KEYCODE_MENU 搜索键 KEYCODE_SEARCH
HOME键 KEYCODE_HOME 呼叫键 KEYCODE_CALL
返回键 KEYCODE_BACK 结束键 KEYCODE_ENDCALL
上调音量键 KEYCODE_VOLUME_UP 电影键 KEYCODE_POWER
下调音量键 KEYCODE_VOLUME_DOWN 照相键 KEYCODE_CAMERA

常用脚本,
连接设备

device = MonkeyRunner.waitForConnection()
device = MonkeyRunner.waitForConnection(5,’设备序列号’)

Home键

device.press(‘KEYCODE_HOME’, MonkeyDevice.DOWN_AND_UP)

重启设备

device.reboot()

唤醒设备

device.wake()

按菜单键

device.press(‘KEYCODE_MENU’,  MonkeyDevice, DOWN_AND_UP)

输入内容

device.type(‘monkeyrunner’)

启动Activity

device.startActivity(component= ‘simple.app/simple.app.SimpleAppActivity’)

安装apk

device.installPackage(“D:\\***.apk”)

卸载apk

device.removePackage(“com.android.chrome”)

控制多个设备

device1 = MonkeyRunner.waitForConnection(5,’设备序列号’)
device2 = MonkeyRunner.waitForConnection(5,’设备序列号’)
device1.press(‘KEYCODE_HOME’, MonkeyDevice.DOWN_AND_UP)
……
Device1.type(‘monkeyrunner’)
Device2.press(‘KEYCODE_HOME’, MonkeyDevice.DOWN_AND_UP)
……
Device2.type(‘testing’)
对比截屏和已存图片	device = MonkeyRunner.waitForConnection(5,’设备序列号’)
result = device.takeSnapshot()
result.writeToFile(‘D:\\result.png’, ‘png’)
Pic2 = MonkeyRunner.loadImageFromFile(‘D:\\picture2.png’)
If(result.sameAs(Pic2, 0.9)):    Print(“success”)
Else:    Print(“fail”)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值