●MonkeyServer机制简介
Monkey可以在设备上启动一个服务端让客户机远程的连接到设备,对设备进行调试和控制
●MonkeyServer使用
?启动MonkeyServer
adb shell monkey --port 1080 &
?连接MonkeyServer
adb forward tcp:1080 tcp:1080 //把PC机的端口映射到设备暴露出来的端口上
telnet 127.0.0.1 1080 //通过telnet本机连接到MonkeyServer
●MonkeyServer的主要命令:
?touch [down|up|move] [x] [y]
?press[keycoe]
?sleep
?getvar(获取系统的变量)
?type (输入一些字符)
?计算器的例子
adb shell monkey --port 1080 & //启动MoneyServer
adb forward tcp:1080 tcp:1080 //把本机的1080端口映射到设备的1080端口
telnet 127.0.0.1 1080 //通过网络连接命令telnet连接本机的1080端口
打开计算器
press KEYCODE_8 //计算器自动输入8
tap 100 500 //根据坐标自动输入数字
这个例子说明通过telnet可以完成对设备的控制操作,但是怎么能够对这些操作实现自动化呢?下面介绍
●MonkeyServer命令脚本化(vbs脚本实现对telnet程序的自动化控制)
·关键脚本
set sh=WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
sh.SendKeys "open 127.0.0.1 1080 {ENTER}"
·启动命令
cscript//nologo monkeyServerRun.vbs
·计算器的例子
Text1:.vbs脚本(脚本需放在电脑本地)
set sh=WScript.CreateObject("WScript.Shell")//启动WScript.Shell
WScript.Sleep 1000
sh.SendKeys "open 127.0.0.1 1080 {ENTER}"//通过telnet打开Monkeyserver地址来访问monkeyserver
WScript.Sleep 1000
Sh.SendKeys "press KEYCODE_3 {ENTER}"
WScript.Sleep 1000
Sh.SendKeys "press KEYCODE_7 {ENTER}"
WScript.Sleep 1000
Sh.SendKeys "press KEYCODE_NUMPAD_ADD {ENTER}"
WScript.Sleep 1000
Sh.SendKeys "press KEYCODE_2 {ENTER}"
WScript.Sleep 1000
Sh.SendKeys "press KEYCODE_1 {ENTER}"
WScript.Sleep 1000
Sh.SendKeys "press KEYCODE_NUMPAD_EQUALS {ENTER}"
WScript.Sleep 1000
Sh.SendKeys "done {ENTER}"
WScript.Sleep 1000
但是monkeyserver并没有提供启动应用的操作,也就是说每次执行monkeyserver指令之前,必须先把被测应用启动起来,这个需要在脚本中有自动启动应用的操作,可以通过批处理脚本来实现。
Text2:.bat脚本(脚本需放在电脑本地)
adb forward tcp:1080 tcp:1080//做好端口映射
adb shell am start -n com.android.calculator2/com.android.calculator2.calculator//启动应用
start telnet.exe//在批处理中启动telnet应用程序
cscript //nologo monkeyServerRun.vbs//执行脚本
·执行MonkeyServer自动打开计算器并且自动计算步骤:
dir *.script 或dir //查看本地有没有text1和2两个脚本
adb shell monkey --port 1080 &
adb forward tcp:1080 tcp:1080
telnet 127.0.0.1 1080
monkeyServer.bat//执行批处理
这就完成了monkeyServer脚本自动化的过程