monkeyrunner录制回放

monkeyrunner Recorder简介

monkeyrunner Recorder是monkeyrunner的图形GUI工具,用户可以直接操作来生成测试脚本。

Recorder功能

  • 可以自动显示手机当前的界面
  • 自动刷新手机的最新状态
  • 点击手机界面即可对手机进行操作,同时会反应到真机,而且会在右侧插入操作脚本

monkeyrunner Recorder启动

启动脚本
1
2
3
4
from com.android.monkeyrunner import MonkeyRunner as mr  
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device=mr.waitForConnection()
recorder.start(device)

启动成功之后显示界面如下:

菜单功能
  • wait: 用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒
  • Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性
  • Type Something:用来输入内容到输入框
  • Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围
  • Export Actions:用来导出脚本,不需要后缀名。
  • Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到
操作录制

直接在界面点击操作即可,右侧会自动生成操作的内容,操作完成之后可以导出脚本。(任意后缀名或无后缀均可以)
录制导出后脚本如下:

1
2
3
4
5
6
7
8
TOUCH|{'x':69,'y':922,'type':'downAndUp',}
TOUCH|{'x':200,'y':776,'type':'downAndUp',}
TOUCH|{'x':657,'y':56,'type':'downAndUp',}
TOUCH|{'x':186,'y':282,'type':'downAndUp',}
TYPE|{'message':'zxw2017',}
TOUCH|{'x':267,'y':370,'type':'downAndUp',}
TYPE|{'message':'123456',}
TOUCH|{'x':355,'y':472,'type':'downAndUp',}
回放脚本

1.首先准备好回放脚本的编译代码 playback.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sys  
from com.android.monkeyrunner import MonkeyRunner as mr

CMD_MAP = {
'TOUCH':lambda dev,arg:dev.touch(**arg),
'DRAG': lambda dev,arg:dev.drag(**arg),
'TYPE': lambda dev,arg:dev.type(**arg),
'PRESS': lambda dev,arg:dev.press(**arg),
'WAIT': lambda dev,arg:mr.sleep(**arg)
}

def process_file(f,device):
for line in f:
(cmd,rest)=line.split('|')
try:
rest = eval(rest)
except:
print 'unable to parse options'
continue
if cmd not in CMD_MAP:
print 'unknown command: ' + cmd
continue
CMD_MAP[cmd](device, rest)

def main():
file = sys.argv[1]
f = open(file,'r')
device = mr.waitForConnection()
process_file(f,device)
f.close()

if __name__=='__main__':
main()

该脚本的功能是将录制的脚本转化为可以回放执行的完整脚本。

回放命令
1
monkeyrunner E:\monkeyrunner_script\playback.py E:\monkeyrunner_script\kyb_recorder
特别说明

monkeyruner录制出来的脚本回放稳定性较差,特别是录制的有些操作,回放时无法操作,因此一般很少使用。

参考资料

https://blog.csdn.net/seven_five577/article/details/54972454
https://blog.csdn.net/caizhigui/article/details/51276686