• Monkey


    MonkeyRunner APIs

    #### MonkeyRunner:用来连接设备或模拟器。

    MonkeyDevice: 提供安装,卸载应用,发送模拟事件

    MonkeyImage:完成图像保存,及对比的操作

    可以做 多设备控制 功能测试 回归测试

    压力测试结果

    1.CRASH:即崩溃,应用程序在使用过程中,非正常退出

    2.ANR: Application Not Responding # 延迟时间太长 未响应

    adb devices # 确认手机和电脑连接成功
    adb install package.apk # 安装包
    adb shell monkey 1000 # 发送压力指令 1000次
    adb logcat | grep START # 获取包名 cmp=com.miui.calculator
    adb shell monkey -p package 100 # 给指定的包打压力 package包名
    adb shell monkey -p com.android.settings -v --throttle 1000 100   # -v 日志 --throttle 测试间隔

    # seed 参数 using seed *********
    adb shell monkey -s 100 50 # 重复执行

    触摸事件

    # 设定触摸事件百分比
    adb shell monkey -v -p com.android.settings --pct-touch 100 100 # 执行100个点击事件 百分比 次数
    // Event percentages:
    //   0: 100.0%     # 代表 --pct-touch 触摸事件
    //   1: 0.0%       # 代表 --pct-motion 滑动事件
    //   2: 0.0%       # 代表 --pct-pinchzoom 缩放事件
    //   3: 0.0%       # 代表 --pct-trackball 轨迹球事件
    //   4: -0.0%      # 代表 屏幕旋转事件百分比
    //   5: 0.0%       # 代表 ---pct-nav 基本导航事件
    //   6: 0.0%       # 代表 --pct-majornav 主要导航事件
    //   7: 0.0%       # 代表 --pct-syskeys 系统事件
    //   8: 0.0%       # 代表 --pct-appswitch Activity启动事件
    //   9: 0.0%       # 代表 --pct-flip 键盘翻转事件
    //   10: 0.0%      # 代表 --pct-anyevent 其他事件

    崩溃事件,超时事件

    # 忽略崩溃和异常
    adb shell monkey --ignore-crashes <event-count>

    # 忽略超时事件
    adb shell monkey -ignore-thimeouts <event-count>

    CRASH 结果析取, ANR结果析取

    # CRASH: com。。。。。。。。。    拷贝发给开发

    # ANR in app
    # Reason:Key******

    # 不在执行monkey中获取ANR信息 在手机系统目录(/data/anr/)下面有一个traces.txt 里面有ANR信息
    adb shell
    root@shamu:// # cd /data/anr/
    root@shamu:/data/anr # ls
    traces.txt
    root@shamu:/data/anr # more traces.txt

    Monkey Script

    # 执行Monkey脚本命令
    adb shell monkey -f <scriptfile> <event-count>

    # 上传脚本到手机/data/local/tmp/
    push 文件名 /data/local/tmp/
    # 执行脚本
    monkey -f 文件名 2

    # 坑1 加 android:exported = “True”
    # 如果你的工程文件里的AndroidManifest.xml下 android:exported = “True”
    # 轨迹球事件
    DispatchTrackball(long downtime,
    long eventtide,
    int action,
    float x,
    float y,
    float pressure,
    float size,
    int metastate,
    float xprecision,
    float yprecision,
    int device,
    int edgeflags)

    # 【注意:按一个键需要两个轨迹球事件】
    # 参数详解:
    # long downtime 指键最初被按下的时间
    # long eventtide 指事件发生的时间
    # int action 指具体操作的动作,如按下 * 0代表按下,1代表弹起
    # float x,float y指x和y的坐标   *
    # float pressure 压力事件的大小(0~1)
    # float size 指触摸的记事值(0~1)
    # int metastate 指当前按下mate键的标识
    # float xprecision,float yprecision 指x和y坐标的精确值
    # int device 事件的来源(0~x)
    # int edgeflags 指超出屏幕了范围
    #  点击事件
    # 【注意:按一个键需要两个点击事件】
    DispatchPointer(long downtime,
      long eventtide,
      int action,
      float x,  
      float y,
      float pressure,
      float size,
      int metastate,
      float xprecision,
      float yprecision,
      int device,
      int edgeflags)
    # 参数详解:
    # long downtime 指键最初被按下的时间
    # long eventtide 指事件发生的时间
    # int action 指具体操作的动作,如按下 * 0代表按下,1代表弹起
    # float x,float y指x和y的坐标   *
    # float pressure 压力事件的大小(0~1)
    # float size 指触摸的记事值(0~1)
    # int metastate 指当前按下mate键的标识
    # float xprecision,float yprecision 指x和y坐标的精确值
    # int device 事件的来源(0~x)
    # int edgeflags 指超出屏幕了范围
    DispatchString  #  输入字符串命令
    DispatchString(String text)

    LaunchActivity # 启动应用
    LaunchActivity(package,Activity)

    UserWait # 等待事件
    UserWait(1000)

    DispatchPress # 按下键值
    DispatchPress(int keycode) # keycode 66 回车键
    # 控制 monkey 发送消息的 Monkey 头
    typ=user
    count=10
    speed=1.0
    start data>>
    # 在此之下,编写 monkey 脚本命令
    LaunchActivity(com.******, Activity)
    UserWait(2000)
    DispatchPointer(10,10, 0,100,100, 1,1,-1,1,1,0,0)
    DispatchPointer(10,10, 1,100,100, 1,1,-1,1,1,0,0)
    DispatchString(zpc)
    UserWait(1000)
    DispatchPress(66)
    UserWait(6000)

    MonkeyRunner

    MonkeyRunner API -alert
    # 警告框
    void alert(string message,
      string title,
      string okTile)


    MonkeyRunner API - waitForConnection
    # 等待设备连接,有镀铬device id,需要指明具体那个设备
    waitForConnection(float timeout, string deviceid)  # 秒 deviceid



    MonkeyDevice API -drag
    # 拖动
    # 拖动起始点,拖动的目标点,需要耗时的时间,插值点的步数,默认10
    drag(tuple start, tuple end, float duration, integer steps)

    MonkeyDevice API -press
    # 按键
    # keycode 名: Down, UP, DOWN_AND_UP
    press(string keycode, dictionary type)

    MonkeyDevice API -startActivity
    # 启动应用
    startActivity(package+'/'+activity)

    MonkeyDevice API -touch
    # 点击
    # X坐标值,Y坐标
    # type:DOWN, UP, DOWN_AND_UP
    touch(integer X, integer Y, integer type)

    MonkeyDevice API -type
    # 输入
    type(string message)

    # ***
    MonkeyDevice API -takeSnapshot
    # 截屏
    MonkeyImage takeSnapshot()



    MonkeyImage API -sameAs
    # 图像对比
    # 需要对比的图像名称,对比相似度的百分比
    boolean sameAS(MonkeyImage other, float percent)

    MonkeyImage API -writetoFile
    # 保存图像文件
    # 路径, 类型
    void writeToFile(string path, string format)


    E:javaandroid-sdk	ools
    λ monkeyrunner E:pycharmappiumMRmk-ad.py   # 要在tools下运行MonkeyRunner
    #!/usr/bin/python
    # -*- coding: UTF-8 -*
    from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
    # 连接设备
    device = MonkeyRunner.waitForConnection(3,'127.0.0.1:62001')

    # 启动app
    device.startActivity('com.android.browser/.BrowserActivity')
    MonkeyRunner.sleep(3)

    # 点击搜索框
    device.touch(100,100,'DOWN_AND_UP')
    MonkeyRunner.sleep(2)

    # 输入查询词
    device.touch()

     

  • 相关阅读:
    数字图像处理学习笔记(1)---位图的读写、几何变换、傅里叶变换、直方图均衡
    【C++】队列的实现
    【C++】一个简单栈的实现
    【Eclipse】Eclipse常用快捷键
    【Android】串口通信
    【Android SDK Manager】Android SDK Manager更新速度慢的一种解决方法
    class-dump 安装使用详解
    ios 给微信开发一个插件并安装到未越狱的手机上教程
    新建的亚马逊云服务器EC2 ping 不通 解决方案
    ubuntu服务器上提示 To run a command as administrator (user "root"), use "sudo <command>". See " 解决方案
  • 原文地址:https://www.cnblogs.com/quietzpc/p/13571049.html
Copyright © 2020-2023  润新知