monkeyrunner 理论知识

首先是需要搭建环境,SDK、Java、Python这些都是需要的,环境准备好之后就可以写脚本测试了。

monkeyrunner的相关知识:

Monkeyrunner是通过坐标、控件ID和控件上的文字操作应用的界面元素,其测试用例是用python写的,这样就弥补了monkey只有简单命令无法执行复杂用例的缺陷。Monkeyrunner采用的是客户端服务器的架构,运行在PC上,逐行解释Python代码,将命令发送到Android设备上,既可以手动编写,也可以使用录制回放方式编写测试用例。

虽然monkeyrunner脚本是使用python编写的,但它实际上是通过Jython来解释执行的。Jython是Python的Java实现,它将Python代码解释成功Java虚拟机上的字节码来执行。这种做法允许在Python中继承一个Java类型,可以调用任意的Java API,也可以复用Java虚拟机自带的垃圾回收机制等。

Monkeyrunner中的API由com.android.monkeyrunner命名空间中的三个类MonkeyrunnerMonkeyDeviceMonkeyImage组成。

Monkeyrunner API主要包括三个模块

1)、MonkeyRunner:这个类提供了用于连接monkeyrunner和设备或模拟器的方法,它还提 供了用于创建用户界面显示提供了方法。

2)、MonkeyDevice:代表一个设备或模拟器。这个类为安装和卸载包、开启Activity、发送按键和触摸事件、运行测试包等提供了方法。

3)、MonkeyImage:这个类提供了捕捉屏幕的方法。这个类为截图、将位图转换成各种格式 、对比两个MonkeyImage对象、将image保存到文件等提供了方法。

1.MonkeyRunner

  提供连接到设备或者模拟器的方法,也提供了为monkeyrunner脚本创建UI界面的一些函数,最常用的函数是waitForConnection:

MonkeyDevice waitForConnetion(float timeout_seconds, string deviceId) 即该函数返回MonkeyDevice对象

   2.MonkeyDevice

  代表一个设备或模拟器,主要封装如安装/卸载应用,启动活动,向应用发送按键或触摸消息等操作,常见API如下。

  1) void installPackage(string path)

  path是PC端的apk路径

  2) void press(string KeyEvent, dictionary type)

  敲击一个按键,type只能是DOWN、UP 或DOWN_AND_UP

  3) void removePackage(string package)

  卸载应用,package为应用的包名,而不是文件名。

  4) void startActivity(string url, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)

  启动一个活动,而不是一个应用。

  url: 启动活动的意图对象的URL,参看Intent.setData()函数;

  action: 启动活动的意图对象的动作,参看Intent.setAction()函数;

  data: 启动活动的意图对象的数据URL,参看Intent.setData()函数;

  mimetype: 启动活动的意图对象的MIME类型,参看Intent.setType()函数;

  categories: 意图对象种类集合,参看Intent.addCategory()函数;

  extras: 根据启动活动的要求,意图对象所需携带的额外数据,参看Intent.putExtra()函数;

  component: 要启动的组件的全名,组件的全名由应用的包名和组件的类名组成;

  flags: 意图对象的标志集合,参考Intent.setFlag()函数;

  5) MonkeyImage takeSnapshot()

  为设备截图,返回一个MonkeyImage对象。

  6) void touch(integer x, integer y, string type)

  发送触摸消息。

  x: x坐标;

  y: y坐标;

  type: 要发送的触摸事件类型,只能是DOWN、UP或DOWN_AND_UP;

  7) void type(string message)

  输入一个字符串。

  8) void wake()

  唤醒设备

3. MonkeImage

  这个类型主要封装屏幕抓图,将图片在不同格式间转换,对比两个图片等操作。

运行monkeyrunner 脚本有两种方式,一种是在在CMD命令窗口直接运行monkeyrunner,另一种使用Python编写测试代码文件,在CMD中执行monkeyrunner xx.py运行

实例:

# 引入本程序所用到的模块
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
# 连接手机设备
device = MonkeyRunner.waitForConnection()
# 截图
result = device.takeSnapshot()
# 将截图保存到文件 
result.writeToFile('E:\me\monkey\Test1_001.png','png')
# 安装新的APP
device.installPackage('E:\me\MonTest.apk')
print ('Install Success!')
result = device.takeSnapshot()
result.writeToFile('E:\me\Test1_003.png','png')

if device.removePackage('com.jh.APP304394.news'):
    print ('Uninstall Success!')
else:
    print 'Uninstall fail'
# 暂停10秒
MonkeyRunner.sleep(10)
result = device.takeSnapshot()
result.writeToFile('E:\me\monkey\Test1_002.png','png')

cmd中执行测试脚本

monkeyrunner test.py,即可执行脚本中的相关操作


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值