移动测试基础 关于 Monkey 脚本封装 bat 运行

uncle · 2015年03月25日 · 最后由 陈恒捷 回复于 2015年03月26日 · 2058 次阅读

adb shell monkey ............
我想最后在手机端生成 monkey 的报告,之前测试过,必须先进入 shell 环境,才可以生成在手机端

所以,在写 bat 的时候遇到了问题

就是 adb shell 之后的命令都不执行

后来想想也对,都已经进入 shell 环境了,肯定不听 windows 使唤了。
之后上网查了一下 说: adb shell < cmd.txt 可以解决
但是我尝试了,也没有得到预期;(我的使用方法不对,参见 17 楼)
想问一下大家应该怎么做~

更新: 解决了
在这里汇总一下关于 monkey 的问题:
1.monkey 运行时,如果选择报告生成在 pc 端,那么 adb 断开连接后,日志就停止记录了
2.根据 1,建议将日志生成在手机端,并定向错误输出 monkey yourcommand >monkey.txt 2>&1
3.日志生成在手机端,需要对命令进行处理,普通手打情况下,必须先进入 shell,再运行 monkey 才能生成报告在手机端,bat 的话比如说 xuxu 说的 adb shell “monkey......>monkey.txt”
4.最终的解决方案是 17 楼,不仅是 monkey 的 bat 可以像 17 楼那样,其他需要在 shell 下执行的语句都可以采用 adb shell < cmd.txt 的方式解决

感谢大家的帮助!谢谢!

共收到 25 条回复 时间 点赞

你想在手机里通过 apk 来运行 monkey,是这个意思么?

如果是的话,那么这个需要 root 的手机,其次你需要一个 system 的证书,然后在 manifest 中增加一个 inject 的权限,至少我知道的是这样。。= =

#2 楼 @monkey 他的意思应该是先通过 adb shell 进入手机的 shell,然后在这个 shell 里面调用 monkey 命令。他想把整个过程写成一个 bat 文件,双击就能执行。

#3 楼 @chenhengjie123 =。=。。这个。。如果是这样的话。。我觉得木有坎儿啊。。。

@uncle_mm 你的 cmd.txt 里面写的是什么?
另外,你要的是什么报告,需要先进入 shell 命令行才能得到?

#5 楼 @chenhengjie123 就是一条 monkey 指令呀,末尾是指向手机端路径,因为 monkey 日志只有 shell 下才能存入手机端,所以先 shell

#4 楼 @monkey 想把日志存到手机端 adb 连接不稳定 存电脑的话容易丢东西

#7 楼 @uncle_mm 你进入 shell 之后命令怎么写的

那你就把运行的脚本先 push 到手机上,然后 adb shell 直接调用这个脚本啊!

@uncle_mm 用这个,adb shell "monkey 1000 > sdcard/monkey_log.txt",带了引号,日志就可以存储在手机中

#7 楼 @uncle_mm 有一点不是很明白,你说 adb 连接不稳定,那么如果 adb 断开,你通过 adb 连到手机 shell 的连接也会断开啊。断开后 monkey 就会自动停止啦(除非另外搞个 daemon 来跑 monkey)。那么你的日志放电脑和放手机有啥区别?

uncle #12 · 2015年03月26日 Author

#8 楼 @monkey adb shell monkey 1000 > /sdcard/monkey.txt 2>&1

uncle #13 · 2015年03月26日 Author

#9 楼 @weamylady 比如脚本写在了 sdcard/cmd.txt 如何调用 对 bat 不熟 见谅

uncle #14 · 2015年03月26日 Author

#10 楼 @xuxu 谢谢 xuxu,我试试

uncle #15 · 2015年03月26日 Author

#10 楼 @xuxu 其实还是想知道一下 如何才能连续运行 比如还有 ls cd 等等的指令 多条的

uncle #16 · 2015年03月26日 Author

#11 楼 @chenhengjie123 adb 断了的话,monkey 不会停哦~ shell 是断开了,但是 monkey 指令运行了,monkey 就会运行直到完成,不管连接是否断开,如果我没记错的话

你说得对,刚刚试了一下,就算 adb 断开了,monkey 还是会继续执行。应该它本来就是 daemon 模式执行的吧。

另外关于你之前提到的adb shell < cmd.txt,试验了一下,确实可以用。
给个简单例子你参考:

test.bat

adb shell < cmd.sh
pause

cmd.sh

monkey 10 > /sdcard/monkey.log
exit
两个文件都放在电脑里的同一文件夹,记得cmd.sh最后一行是空行,否则会停在出现了exit命令但没执行的地方。
cmd.sh里面就能像写shell脚本那样任意写命令了。
uncle #18 · 2015年03月26日 Author

#17 楼 @chenhengjie123 nice!我之前把 sh 放到手机里了,着实很 2 啊~ 谢谢 chg123~ 可以结贴了 么么哒

uncle #19 · 2015年03月26日 Author

#10 楼 @xuxu 17 楼

#18 楼 @uncle_mm 能解决就好!其实我之前也只知道>>><这种重定向第一次玩。。。

电脑端执行的可以这样写
adb shell "moneky -v -v -v 1000 >>/sdcard/monkeylog.txt"
需要 su 的
adb shell su -c "comand"

uncle #22 · 2015年03月26日 Author

#21 楼 @shixue33 嗯 之前试过 su 那个 可以搞,不过就是想写在 bat 里,一行一行运行那种感觉;谢谢剪烛妹子

#22 楼 @uncle_mm O(∩_∩) O 哈哈~

#23 楼 @shixue33 妹子你好,我在科技园- 3-

#24 楼 @weamylady O(∩_∩) O 哈哈~半年后也会搬去科技园

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册