贴一下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[1]
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脚本的绝对路径。如图:
到了这里,就已经轻松的完成了自动化测试工作了。