Android自动化测试之MonkeyRunner

一:简介

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即可

   

 

你可能感兴趣的:(Android自动化测试之MonkeyRunner)