Monkey Runner 在触摸时抛出套接字异常损坏的管道

2024-02-08

我在运行 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(本机方法) 140501 17:01:58.950:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice] 在 java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

我怎样才能抓住这些?有帖子建议使用 SocketException 从 java.net 导入 SocketException

但这似乎不起作用


这可能不是最优雅的解决方案,但这是我想出的。

由于问题是当您杀死猴子脚本时,Android 设备上的进程无法正确清理,因此当您尝试再次连接时,您会遇到管道问题。您可以杀死 -9 设备本身上的猴子进程,这样您就不会再遇到它了。

我有两个脚本可以解决这里的问题。 这是蟒蛇:

 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 Monkey 脚本时,它会调用killmonkey,它会杀死所连接的Android设备上的进程

特别是,仅当仅连接一台设备时,此功能才有效,因为它未指定设备 ID。不是很优雅,但我发现它很有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Monkey Runner 在触摸时抛出套接字异常损坏的管道 的相关文章

随机推荐

  • BLE 参数协商如何工作?

    我想知道当 中央 和 外围 设置不同的参数时 参数协商如何工作 我可能是错的 但根据我的理解 外围设备在连接时会发出更新请求 以设置连接的参数 然后中央决定是否批准 我不明白的是如何决定这些参数是否获得批准 而且我还没有找到任何代码 例如
  • PowerShell - 为加载的程序集设置别名

    我使用这段代码来加载 Net汇编到 PowerShell System Reflection Assembly Load System Windows Forms Version 2 0 0 0 Culture neutral Public
  • 向 Python Swig 模板类添加新方法

    我需要向我的 swig 模板类添加一个新方法 例如 我在 myswig i 中声明一个模板类 如下所示 template DoubleVector vector
  • 无法滚动到溢出容器的弹性项目的顶部

    在尝试使用 Flexbox 制作有用的模式时 我发现似乎是浏览器问题 并且想知道是否有已知的修复或解决方法 或者关于如何解决它的想法 我试图解决的问题有两个方面 首先 使模态窗口垂直居中 这按预期工作 第二个是让模态窗口在外部滚动 因此整个
  • 如何更改 QTabWidget 中的文本对齐方式?

    我找不到在 QTabWidget 中设置文本对齐方式的方法 创建此小部件的实例后 我设置了其选项卡位置属性为西方 但我希望它水平显示文本 标签 我已经看过 Qt 的了样式表 https doc qt io qt 4 8 stylesheet
  • 在 VS Code 中创建自定义 HTML 片段

    我正在远离织梦者 我知道它很糟糕 但它有它的用处 用于 VS Code 的电子邮件开发 Dreamweaver 提供的一项方便的功能是使用自定义片段 VS Code 优惠自定义片段 https code visualstudio com d
  • Spring 的 ThreadPoolTask​​Executor 的默认队列大小是多少?

    我正在使用 Spring 4 3 8 RELEASE 和 Java 7 我想创建一个线程池来执行任务 所以我在 Spring contxet 中设置了以下内容
  • 如何获取子进程的退出状态?

    两个示例输出 由我的教授提供 是 这些在 Linux 终端中输入 ibrahim ibrahim latech prog2 Current working directory home ibrahim Executing ls all l
  • 使用 React 路由器以编程方式导航

    With react router我可以使用Link元素来创建由反应路由器本机处理的链接 我看到它内部调用this context transitionTo 我想做一个导航 不是来自链接 而是来自下拉选择 作为示例 我怎样才能在代码中做到这
  • usql 应用程序和脚本的单元测试

    我有一个自定义的 USql 应用程序 它扩展了IApplier class SqlUserDefinedApplier public class CsvApplier IApplier public CsvApplier totalcoun
  • 使用 Safari/Chrome 卸载时的 Ajax(或 JSONP)

    如果您尝试发送 Ajax 请求 JSONP 请求 甚至卸载时的 window name 请求 Safari 和 Chrome 会运行代码 但服务器永远看不到该请求 我的理论是执行线程在更改页面之前决不允许脚本标记运行 这是一个带有 JSON
  • 如何在javascript中获取托管bean属性值[重复]

    这个问题在这里已经有答案了 谁能告诉我如何在 javascript 方法中获取托管 bean 属性值 就像是 function fonction1 var variable myBean property 你可以喜欢这样
  • 如何在已加载的页面上生成并显示 TCPDF pdf?

    我正在尝试使用 TCPDF 即时生成 PDF 并将其显示在浏览器中 我已经 将 PDF 输出为下载文件 内联输出 PDF 无需任何 HTML 使用 pdf gt Output example 007 pdf I 我想做的是 输出内嵌已打印
  • 为什么 2 的补码符号扩展通过添加符号位的副本来工作?

    我们以将 16 位有符号数符号扩展为 32 位寄存器为例 例如mov 5 ax movswl ax ebx 有两种可能的情况 高位为零 数字为正 这是非常容易理解和直观的 例如 如果我有号码5 左填充零非常容易理解 例如 00000000
  • 闪亮的r:来自上传数据的数字输入

    我刚刚开始使用闪亮并得到以下结果basic问题 1 上传的纵向数据包括治疗名称一栏 如A B C D 另一栏包括相应的数字代码 如1 2 4 6 根据上传的数据 编码可能会有所不同 每种治疗均针对一组患者进行 我想使用数字代码来选择要比较的
  • 组合来自不同 SOAP 方法的循环值

    我从不同的 SOAP 方法获取数据 举个例子 wsdl the url of wsdl client new SoapClient wsdl parameters array all the parameters inside values
  • 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs / ESM

    我的基于 Node 的项目是使用 Node 上的原生 ES 模块支持来实现的 这要归功于 experimental modulesCLI 开关 即node experimental modules 显然 当我使用 Jasmine 运行规范时
  • C# 中的闭包分配

    我已经安装了 Clr 堆分配分析器扩展 在一个项目中我看到了一些我完全不理解的东西 我有一个带有签名的方法 public Task
  • 如何从两个或多个矩阵的所有可能组合创建一个矩阵?

    假设有两个矩阵 A lt B lt diag 3 gt A 1 2 3 1 1 0 0 2 0 1 0 3 0 0 1 我想创建一个新的矩阵AB 它由A和B行的所有可能组合组成 预期结果 gt AB 1 2 3 4 5 6 1 1 0 0
  • Monkey Runner 在触摸时抛出套接字异常损坏的管道

    我在运行 Monkeyrunner 脚本时有时会看到以下错误 140501 17 01 58 950 S MainThread com android chimpchat adb AdbChimpDevice 发送触摸事件时出错 500 5