monkeyrunner - Monkey Runner在触摸时抛出socketexception断管

标签 monkeyrunner

我在运行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。不是很优雅,但我觉得它很有效。

关于monkeyrunner - Monkey Runner在触摸时抛出socketexception断管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416663/

相关文章:

AndroidViewClient 删除包和 broadcastreceiver

android - 通过 eclipse/java 将 logcat 输入发送到 Monkeyrunner 会导致问题

android - 通过 monkeyrunner 脚本在 android 上使用 dd 创建虚拟文件

android - MonkeyRunner 无法使用 startActivity

android - adb.exe 不可执行。 ANDROID_HOME 未设置

jython - 如何在 MonkeyRunner 中捕获 SocketExceptions?

android - 为什么 MonkeyRunner.waitForConnection() 错误 "Adb rejected adb port forwarding command: cannot bind socket"

robotium - 可以在机器人中使用来自猴子运行者的命令吗?

AndroidViewClient 不显示 id

Android monkeyrunner 在 Ubuntu 中导致 XWindows 崩溃