什么是MonkeyRunner
monkeyrunner是Android sdk中自带的一个通过接收测试脚本(使用python语言编写的)来执行功能性测试的工具。
MonkeyRunner的使用
步骤一:启动MonkeyRecorder,在Android sdk的tools\bin目录下新建monkey_record.py将如下代码拷贝进去。
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device = mr.waitForConnection()
recorder.start(device)
步骤二:打开cmd进入Android sdk的tools\bin目录下执行如下操作
步骤四:进行录制
- wait: 用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒
- Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性
- Type Something:用来输入内容到输入框
- Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围
- Export Actions:用来导出脚本,不需要后缀名,也可以添加后缀名.mr
- Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到
步骤五:编写用来运行录制的脚本的脚本,需要我们在Android sdk的tools\bin新建一个文件monkey_playback.py并将如下代码拷贝进去用来运行脚本。
import sys
from com.android.monkeyrunner import MonkeyRunner
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:
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()
monkey_playback.py
步骤六:运行脚本,回放完成
# 在cmd命令行中输入命令:
monkeyrunner monkey_playback.py test.mr
补充:在运行monkeyrunner的时候可能会提示SWT folder '..\framework\x86_64' does not exist. Please set ANDROID_SWT to point to the folder conta,这需要我们对monkeyrunner.bat进行修改。
1).set frameworkdir=lib (纠正)==》set frameworkdir=..\lib
2).Dcom.android.monkeyrunner.bindir=..\framework -jar %jarpath% %* (纠正)==》Dcom.android.monkeyrunner.bindir=....\platform-tools -jar %jarpath% %*