monkeyrunner之Monkey Runner在触摸时抛出socketexception断管
我在运行monkeyrunner脚本时有时会看到以下错误。
140501 17:01:58.950:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice] 发送触摸事件时出错:500 515 DOWN_AND_UP
140501 17:01:58.950:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]java.net.SocketException:管道损坏
140501 17:01:58.950:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice] 在 java.net.SocketOutputStream.socketWrite0( native 方法)
140501 17:01:58.950:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice] 在 java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
我如何捕获这些?有帖子建议使用 SocketException
从 java.net 导入 SocketException
然而这似乎不起作用
请您参考如下方法:
这可能不是最优雅的解决方案,但这是我想出的。
由于问题是当你杀死一个monkey脚本时,android设备上的进程没有正确清理,所以当你再次尝试连接时,你会遇到管道问题。您可以在设备本身上杀死 -9 猴子进程,您将不再遇到它。
我有两个脚本可以解决这里的问题。
这是 python :
3 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
4 from time import sleep
5 import sys
6 import signal
7 import subprocess
8
9 device = None
10
11 def execute():
12 device = MonkeyRunner.waitForConnection()
13 #my code here
17
18 def exitGracefully(signum, frame):
19 print "Exiting Gracefully..."
20 subprocess.call(['./killmonkey.sh'])
21 sys.exit(1)
22
23 if __name__ == '__main__':
24 signal.signal(signal.SIGINT, exitGracefully)
25 execute()
和杀死猴子脚本:
#!/bin/bash
var=$(adb shell ps | grep monkey | awk '{print $2}')
echo $var
adb shell kill -9 $var
当我 ctrl+c 运行 python 猴子脚本时,它会调用 killmonkey,它会终止所连接的 android 设备上的进程
这仅在只有一个设备连接时才有效,因为它没有指定设备 ID。不是很优雅,但我觉得它很有效。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。