美文网首页软件测试软件测试
Android自动化测试之MonkeyRunner

Android自动化测试之MonkeyRunner

作者: 520Dreamer | 来源:发表于2019-10-30 12:49 被阅读0次

    一:简介

    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

        本文链接:https://www.haomeiwen.com/subject/obsovctx.html