最有用的monkeyrunner工具录制与回放经验总结
的有关信息介绍如下:monkeyrunner是Google自带的基于黑盒的自动化测试工具,通过与Python语言结合,你可以写出你想要的结果。而通过我们简单的配置,及时不会Python语言也能轻松的实现自动化测试,完全零代码测试。下面是测试准备工作:
录制与回放文件准备:
monkeyrunner的源代码可以在android源代码里找到,monkeyrunner源代码里有个scripts文件夹,里面有recorder.py和monkey_playback.py两个python文件,这两个文件就是用来录制和回放的~!将这两个文件放入到sdk/tool目录下。若没有找到这两个文件,我们可以自制文件:将下面两段代码分别放入对应recorder.py和monkey_playback.py两个python文件:
贴一下monkey_recorder.py文件:
#!/usr/bin/env monkeyrunner
# Copyright 2010, The Android Open Source Project
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device = mr.waitForConnection()
recorder.start(device)
贴一下monkey_playback.py文件:
#!/usr/bin/env monkeyrunner
# Copyright 2010, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
from com.android.monkeyrunner import MonkeyRunner
# The format of the file we are parsing is very carfeully constructed.
# Each line corresponds to a single command.The line is split into 2
# parts with a | character.Text to the left of the pipe denotes
# which command to run.The text to the right of the pipe is a python
# dictionary (it can be evaled into existence) that specifies the
# arguments for the command.In most cases, this directly maps to the
# keyword argument dictionary that could be passed to the underlying
# command.
# Lookup table to map command strings to functions that implement that
# command.
CMD_MAP = {
'TOUCH': lambda dev, arg: dev.touch(**arg),
'DRAG': lambda dev, arg: dev.drag(**arg),
'PRESS': lambda dev, arg: dev.press(**arg),
'TYPE': lambda dev, arg: dev.type(**arg),
'WAIT': lambda dev, arg: MonkeyRunner.sleep(**arg)
}
# Process a single file for the specified device.
def process_file(fp, device):
for line in fp:
(cmd, rest) = line.split('|')
try:
# Parse the pydict
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
fp = open(file, 'r')
device = MonkeyRunner.waitForConnection()
process_file(fp, device)
fp.close();
if __name__ == '__main__':
main()
到这里文件准备已完成。
启动工具:
在cmd中进入到sdk/tool目录下,例如我的目录是:D:\softwere\adt\sdk\tools,然后在命令行中输入命令:monkeyrunner monkey_recorder.py
当点击enter见若能弹出下图,则启动成功。
窗口界面功能说明:
wait:用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒。
Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性。
Type Something:用来输入内容到输入框。
Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围。
Export Actions:用来导出脚本。
Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到。
录制与保存:
接上步,在屏幕界面区域点击需要测试的应用,可以再点击界面上提供的事件按钮插入事件,若录制好后点击Export Actions将脚本保存至本地,可以给脚本加后缀.mr文件,也可以不加后缀。
脚本回放:
开启cmd,进入到sdk/tool目录下,执行monkeyrunner monkey_playback.py脚本的绝对路径。如图:
到了这里,就已经轻松的完成了自动化测试工作了。