Monkey
#### 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:\java\android-sdk\tools
λ monkeyrunner E:\pycharm\appium\MR\mk-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()

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号