Android自动化测试之MonkeyRunner

520Dreamer 2019-10-30 12:57:41
一:简介 1.monkeyrunner:android SDK自带的工具,提供多个API,可使monkeyrunner API写python测试脚本来模拟操控andriod设备或模拟器中的app,测试其稳定性并可通过截屏记录出现的问题。 2.工具特性: (1)多设备控制:API可跨多设备,一次启动全部模拟器来实施测试套件 (2)功能测试:为应用自动执行功能测试,然后观察输出结果截屏 (3)可扩展自动化:monkeyrunner是一个api工具包,可开发基于python模块整个系统来控制android设备 (4)回归测试:monkeyrunner可运行某个应用并将其结果截图与已知正确的结果截图相比较,以此测试应用稳定性。 二:环境配置 配置环境:JDK+SDK+python(详询可查看上一节monkey环境配置),最后将monkeyrunner环境变量进行配置,配完在终端里输monkeyrunner检测是否配成功。 三:monkeyrunner API三个类的应用 1.MonkeRunner类:提供连接真机和模拟器,输入,暂停,警告等方法   (1)waitForConnection(float timeout,string deviceid):等待设备连接,有多个device id,需要指明具体哪个设备。 eg:device=MonkeyRunner.waitForConnection()   (2) alert(弹出对话框)     eg:void alert(string message,string title,string ok Title)   (3) input():输入 .      sleep():暂停 .    choice():选项列表 .    help():API帮助文档 2.MonkeyDevice类:提供安装和卸载程序包,开启activity,发送按键和点击事件,运行测试包等方法   (1)startActivity(package+'/'+activity):启动应用,通常传递包名,activity名即可         eg:startActivity(component='com.android.settings/.MainActivity')   (2)installPackage(string path) :安装程序包,path为程序包路径             removePackage(string package:卸载程序包   (3)touch(integer x,integer y,integer type):点击操作             integer  x,y:坐标值             integer  type:keyevent类型(Down,Up,DOWV_AND_UP)               Down为按下事件,UP为弹起事件,DOWV_AND_UP为按下弹起事件                  eg:  device.touch(918,540,'DOWN_AND_UP')   (4)press(string name,dictionary type):按键   keycode类型: BACK键:KEYCODE_BACK  Home键:KEYCODE_HOME   上导航:KEYCODE_DPAD_UP  下导航: KEYCODE_DPAD_DOWN      OK键:KEYCODE_DPAD_CENTER     type类型同上     eg:device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)     (5) drag(tuple start,tuple end,float duration,integer steps):拖动                 start:起点位置 end:终点位置 duration:手势持续时间 steps:插值点的步数,默认为10               eg:device.drag((100,1053),(520,1053),0.1,10)     (6)type(string message):输入       (6)  instrument():执行测试用例  shell():执行命令  reboot():重启             broadcastIntent():发送广播    getProperty:获取当前设备属性              getSystemProperty():获取系统配置信息 3.MonkeyImage类   (1)takeSnapshot():截屏   (2)boolean sameAs(MonkeyImage other,float percent):图像对比   (3)writetoFile(string path,string format):保存图像文件       eg:result=device.takeSnapshot()             result.writeToFile('/Users/Apple/Desktop/1.png','png') 四:简单实践(可在终端里调试也可以写python测试脚本进行调试) 终端里: #看是否连接上设备   adb devices #查看带Android的package包名 adb shell pm list packages |grep Android #查看当前测试包有哪些activity adb shell dumpsys package com.Android.settings |grep Activity #进入monkeyrunner monkeyRunner #导入模块 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage #连接当前设备,并返回一个MonkeyDevice对象 device=MonkeyRunner.waitForConnection() #安装Android包 device.installPackage('/Users/Apple/Desktop/.apk') #卸载程序 device.remove() #使用adb shell pm list packages |grep Android抓所需测试的package,再使用 adb shell dumpsys package com.Android.settings |grep Activity抓所需测试的活动 或使用aapt(apktool安装)获取activity下package和入口activity名称,使用cmd窗口下面,跳转到apktool下,输入aapt dump badging /Users/Apple/Desktop/.apk #启动一个Activity device.startActivity(component='com.android.settings/.MainActivity') #截图 result=device.takeSnapshot() result.writeToFile('/Users/Apple/Desktop/1.png','png') #从PC加载图片 pic=MonkeyRunner.loadImageFromFile( './shot.png') 用Python写测试脚本同理,再在终端里运行 monkeyrunner  /./. py即可
...全文
43 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,177

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 质量管理/软件测试
功能测试压力测试安全性测试 个人社区 湖南省·长沙市
社区管理员
  • 软件测试
  • 虫无涯
  • 小博测试成长之路
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家加入到软件测试的社区,在这里,希望大家勇于发表自己的看法,欢迎大家分享自己在软件测试工作过程中遇到的问题以及工作经验分享。

1.想转行的小伙伴,遇到问题没有及时回复的,可以私聊小博进行反馈

2.大家对社区有好的建议,都可以在社区发帖进行反馈

推荐大家学习的软件测试入门笔记:软件测试入门学习笔记

试试用AI创作助手写篇文章吧