目录
MonkeyRunner提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。 使用monkeyrunner前,需要安装和配置JDK、SDK和Python。
Monkeyrunner和Monkey都是Android UI自动化测试工具,但是它们的使用场景和功能有所不同。
Monkey工具是一个基于随机事件的黑盒测试工具,它可以随机模拟用户操作事件并发送到被测试的应用程序中,从而发现应用程序中可能存在的问题,如崩溃、性能问题、安全漏洞等。Monkey工具的功能简单、易于使用,适用于快速发现应用程序的潜在问题。
而Monkeyrunner工具则是一个更为灵活、高级的工具,它提供了一个Python API,可以编写脚本来控制设备,执行自动化测试和其他任务,如截图、日志分析等。与Monkey工具不同的是,Monkeyrunner工具可以更加自定义化地模拟用户操作,比如模拟多点触控、滑动屏幕、输入文本等,从而更加准确地测试应用程序的功能和性能。
因此,Monkey工具适用于快速测试应用程序的基本功能和健壮性,而Monkeyrunner工具适用于更加深入、全面地测试应用程序的功能和性能,需要更高的编程技能和专业知识。
- #!/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)
- # 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目录下的tools文件下输入:
monkeyrunner monkey_recorder.py
打开monkeyrunner的录制界面
在CMD中输入
monkeyrunner monkey_playback.py recorder.mr
回放刚录制的脚本,用虚拟机录制的脚本一般回放速度较慢,需耐心等待。
以下是录制和回放MonkeyRunner脚本的步骤总结:
安装Android SDK并配置环境变量
打开终端或命令提示符,进入Android SDK中的tools目录
运行MonkeyRunner脚本录制命令
monkeyrunner -v -p package_name -s serial_number script_file.py
其中,-v表示启用详细输出,-p后跟应用程序的包名,-s后跟设备的序列号,script_file.py表示脚本文件的路径。
在设备上执行一些操作,例如点击、滚动等
终止录制并保存生成的脚本文件
运行MonkeyRunner脚本回放命令
monkeyrunner script_file.py
4.检查回放结果,查看应用程序是否按照预期运行
以上是录制和回放MonkeyRunner脚本的基本步骤,需要注意的是,在录制脚本时应尽量模拟真实用户交互,避免一些无意义的操作。同时,也应根据应用程序的不同特点进行定制化的脚本开发,以充分发挥MonkeyRunner工具的测试效果。
在录制和回放MonkeyRunner脚本时,需要注意以下事项:
1.设备连接: 在录制和回放MonkeyRunner脚本之前请确保设备已经正确地连接到计算机上。
2.清晰的操作流程: 在录制脚本之前,需要想好清晰的操作流程,以避免录制过程中出现混乱的情况。
3.正确的坐标: 在录制触摸屏的操作时,需要确保手指在正确的坐标位置,以确保触摸到正确的界面元素。
4.尽可能多的错误处理: 在编写脚本时,需要考虑尽可能多的错误处理情况,以确保脚本具有更好的稳定性。
5.日志记录: 在脚本回放时,可以使用日志记录来记录执行的步骤和发生的错误,以便于调试脚本。
6.避免过度依赖图像识别: 尽可能使用显式的元素定位方法来进行操作,避免过度依赖图像识别,以确保脚本的可靠性和稳定性。它,向它发送模拟击键,截取它的用户界面图片,并将截图存储