monkeyrunner的介绍网上已经很多,参考了大家总结的具体用法自己做了个实例,想着业余时间可以把这些脚本优化下。在考虑写脚本之前我们需要先分析被测应用哪些功能点,业务逻辑基本已经稳定,UI基本不再修改。我们需要对这些典型的操作流程进行回归测试。
1、环境配置不再赘述
2、分析的时候最好使用excel建一个表用来指导我们编写脚本,更重要的是我们可以在编写所谓的案例的同时,使用android自带的工具进行坐标获取。(hierarchyviewer 获得坐标工具)例如:操作步骤
1、启动象棋应用进入主菜单
2、点击“对弈”按钮进入对局界面
3、点击“新局”按钮打开新局界面
4、点击“取消”按钮关闭对局界面
4.2点击其他屏幕区域关闭对局界面
4.3点击手机返回键关闭对局界面
每一步操作我们需要进行截图处理
3、根据我们的前期准备就可以一边查看monkeyrunner的API文档一边编写我们的脚本了,基本就是伪代码转变python脚本的实现,对比着做很简单。
(最好是用真机进行坐标获取或者调试程序,模拟器太卡,出一些异常错误,一直怀疑是脚本写错了,后来更换了真机以后顺利通过。对于一些没有源码的apk我们可以直接用反编译工具查看AndroidManifest文件就行,或者你也可以直接adb shell ps查看进程获取)
附上代码方便大家交流首次写这个,如有错误回复留言!
#! /usr/bin/env python
#coding=utf-8
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice,MonkeyImage
import sys
import time
class test:
def __init__(self):
self.device = MonkeyRunner.waitForConnection(10)
if self.device:
print "success!!!"
else:
print >> sys.stderr,"fail"
sys.exit(1)
def startapp(self,app):
self.device.startActivity(component=app)
MonkeyRunner.sleep(3)
def images(self):
MonkeyRunner.sleep(3)
times = str(int(time.time()))
result = self.device.takeSnapshot()
MonkeyRunner.sleep(3)
result.writeToFile('C:/xiangqi/image'+times+'.png','png')
def event(self,position,ty):
self.device.touch(position['x'],position['y'],ty)
MonkeyRunner.sleep(3)
def fanhui(self):
self.device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
if __name__=='__main__':
xiangqi = test()
position = {'x':241,'y':316}
ty = "'DOWN_AND_UP'"
xiangqi.startapp("com.cnvcs.xiangqi/com.cnvcs.App")#启动应用进入主菜单
xiangqi.images()#截图主菜单
xiangqi.event(position,ty)#点击对弈
xiangqi.images()#截图对弈界面
position = {'x':144,'y':737}
xiangqi.event(position,ty)#点击新局
xiangqi.images()#截图新局界面
position = {'x':350,'y':605}
xiangqi.event(position,ty)#点击取消
xiangqi.images()#截图取消新局界面
xiangqi.fanhui()