zoukankan      html  css  js  c++  java
  • MonkeyRunner的简介与综合实践

    官方介绍:

    Monkeyrunner工具提供了一个API,用于编写可从Android代码外部控制Android设备或模拟器的程序。使用monkeyrunner,您可以编写一个Python程序来安装Android应用程序或测试包,运行它,向其发送击键,获取其用户界面的屏幕快照,并将屏幕快照存储在工作站上。Monkeyrunner工具主要用于在功能/框架级别测试应用程序和设备以及运行单元测试套件,但是您可以将其自由用于其他目的。

    MonkeyRunner工具使用Jython,它是使用Java编程语言的Python实现。Jython允许Monkeyrunner API与Android框架轻松交互。使用Jython,您可以使用Python语法访问API的常量,类和方法。

    MonkeyRunner功能

    1.多设备控制:Monkeyrunner API可以在多个设备或仿真器上应用一个或多个测试套件。

    2.功能测试:monkeyrunner可以运行Android应用程序的自动完成测试。您可以通过击键或触摸事件提供输入值,并将结果作为屏幕截图查看。

    3.可扩展的自动化:由于Monkeyrunner是API工具包,因此您可以开发用于控制Android设备的基于Python的模块和程序的整个系统。

    MonkeyRunner与monkey的区别

    两者没有直接关系

    MonkeyRunner:在工作站上通过API定义的特定命令和事件控制设备,可以智能截图进行对比,回溯详细的bug路径,相对比较灵活;

    monkey:在设备上直接运行adb shell 命令生成随机的事件进行测试

    MonkeyRunner环境搭建

    • 安装配置好jdk环境
    • 安装android-sdk
    • 安装python
    • 环境变量的配置     [路径]、Android-SDK ools

    安装成功后,在cmd中检测,输入monkeyrunner,有返回java jdk版本就安装成功

    C:Usersadmin>monkeyrunner
    Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
    [Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_31
    >>>

    MonkeyRunner  API

    1.MonkeyRunner

    2.MonkeyDevice

    3.MonkeyImage

    官方文档:https://www.android-doc.com/tools/help/monkeyrunner_concepts.html

    1.MonkeyRunner类:

    提供连接真机和模拟器、输入、暂停、警告框等方法。

     常用方法(连接设备):waitForConnection(float timeout,string deviceid)  

    from com.android.monkeyrunner import MonkeyRunner as mr

    device = mr.waitForConnection(5,'127.0.0.1:62001')

    2.MonkeyDevice类

    提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法

    常用方法:

    installPackage(pc端存放apk路径) 安装应用

    removePackage(apk包名) 卸载应用

    startActivity(package+'/'+activity) 启动应用

    touch(integer x,integer y, integer type) x,y为坐标值,type(DOWN,UP,DOWN_AND_UP........)

    drag(tuple start,tuple end,float duration,integer steps)拖拉控件  float duration拖动持续时间,默认为1s,integer steps拖动的步数默认为10

    takeSnapshot()截屏 

    press(string keycode,dictionary type) 按键   keycode:KEYCODE_HOME、KEYCODE_BACK等等  type(DOWN,UP,DOWN_AND_UP........)

    type(string message)输入字符

    3.MonkeyImage类

    sameAs(MonkeyImage other,float percent)图像对比,对比的相似度,结果boolean类型

    writetoFile(string path,string format)图像保存

     运行一个淘宝登录实例.

    这里用的是夜神模拟器,所以设置等待时间比较长,有条件的同学可以用真机调试

    from com.android.monkeyrunner import MonkeyRunner as mr

    from com.android.monkeyrunner import MonkeyDevice as md

    from com.android.monkeyrunner import MonkeyImage as mi

    print("launch connect")#连接设备
    device = mr.waitForConnection(5,'127.0.0.1:62001')

    if not device:
    print("connect fail")

    print("install package...")#安装应用
    device.installPackage("E:/tao.apk")

    print("startActivity")#启动app
    device.startActivity(component='com.taobao.taobao/com.taobao.tao.welcome.Welcome')
    mr.sleep(20)
    print("start agree")#同意用户协议
    device.touch(535.5,1273.3,'DOWN_AND_UP')
    mr.sleep(15)

     #进入我的界面

    device.touch(965,1874,'DOWN_AND_UP')
    mr.sleep(5)

    #输入用户账号、密码

    device.touch(175.8,370.4,'DOWN_AND_UP')
    device.type('账号')
    mr.sleep(2)

    device.touch(155.8,501.7,'DOWN_AND_UP')
    device.type('密码')
    mr.sleep(2)

    device.touch(521.5,644.7,'DOWN_AND_UP')

    print("Snapshot...")#截图
    result = device.takeSnapshot()
    result.writeToFile('E:/test.png','png')

    #按home键返回桌面

    device.press('KEYCODE_HOME','DOWN_AND_UP')

    print("remove package")#卸载应用
    device.removePackage('com.taobao.taobao')

     相应的按键对应的名称如下:

    home键:KEYCODE_HOME
    back键:KEYCODE_BACK
    send键:KEYCODE_CALL
    end键:KEYCODE_ENDCALL
    上导航键:KEYCODE_DPAD_UP
    下导航键:KEYCODE_DPAD_DOWN
    左导航:KEYCODE_DPAD_LEFT
    右导航键:KEYCODE_DPAD_RIGHT
    ok键:KEYCODE_DPAD_CENTER
    上音量键:KEYCODE_VOLUME_UP
    下音量键:KEYCODE_VOLUME_DOWN
    power键:KEYCODE_POWER
    camera键:KEYCODE_CAMERA
    menu键:KEYCODE_MENU

    转载请附上原文链接。
  • 相关阅读:
    Python range() 函数用法
    python测试框架&&数据生成&&工具最全资源汇总
    为什么你写的用例测不出Bug来?
    软件测试人员必备知识工具清单
    接口测试需要验证数据库么?
    如何在实际工作做开展性能测试?
    为什么要做接口测试?
    面试时让你说一个印象最深的bug,该怎么回答
    maven一键部署tomcat war包(转载)
    数据库中 显示 小计 与 总计
  • 原文地址:https://www.cnblogs.com/bugbreak/p/11978527.html
Copyright © 2011-2022 走看看