无法将命令代理到远程服务器。原始错误:错误:读取 ECONNRESET

Sub*_*ako 4 java automation appium

我无法运行之前运行的自动化脚本。当我尝试在新设备中运行相同的代码时,它工作正常。

Appium 服务器日志

[UiAutomator2] 运行命令:'adb -s K3V4C18B16002502 shell am instrument -w io.appium.uiautomator2.server.test/android.support.test.runner.AndroidJUnitRunner' [UiAutomator2] 等待 UiAutomator2 在线时间长达 20000 毫秒。 . [debug] [JSONWP Proxy] 将 '/status' 与命令名称 'getStatus' 匹配 [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]与没有正文 [JSONWP 代理] 得到了一个意外的响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status' 到命令name 'getStatus' [debug] [JSONWP Proxy] 代理 [GET /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [UiAutomator2] [UIAutomator2] android.util。 AndroidException: INSTRUMENTATION_FAILED: io.appium.uiautomator2.server.test/android.support.test.runner.AndroidJUnitRunner [debug] [UiAutomator2] [UIAutomator2] INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{io.appium.uiautomator2 .server.test/android.support.test.runner.AndroidJUnitRunner} [debug] [UiAutomator2] [UIAutomator2] INSTRUMENTATION_STATUS: id=ActivityManagerService [debug] [UiAutomator2] [UIAutomator2] INSTRUMENTATION_STATUS_CODE: -1 [debug] [UiAutomator2] ] 在 com.android.commands.am.Instrument.run(Instrument.java:486) [调试] [UiAutomator2] [UIAutomator2] 在 com.android.commands.am.Am.runInstrument(Am.java:194) [调试] [UiAutomator2] [UIAutomator2] 在 com.android.commands.am.Am。 onRun(Am.java:80) [debug] [UiAutomator2] [UIAutomator2] at com.android.internal.os.BaseCommand.run(BaseCommand.java:54) [debug] [UiAutomator2] [UIAutomator2] at com.android。 commands.am.Am.main(Am.java:50) [debug] [UiAutomator2] [UIAutomator2] at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) [debug] [UiAutomator2] [UIAutomator2] at com .android.internal.os.RuntimeInit.main(RuntimeInit.java:371) [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET /status] 到 [得到194) [调试] [UiAutomator2] [UIAutomator2] 在 com.android.commands.am.Am.onRun(Am.java:80) [调试] [UiAutomator2] [UIAutomator2] 在 com.android.internal.os.BaseCommand。 run(BaseCommand.java:54) [debug] [UiAutomator2] [UIAutomator2] at com.android.commands.am.Am.main(Am.java:50) [debug] [UiAutomator2] [UIAutomator2] at com.android。 internal.os.RuntimeInit.nativeFinishInit(Native Method) [debug] [UiAutomator2] [UIAutomator2] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:371) [debug] [JSONWP Proxy] 匹配'/状态' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET]194) [调试] [UiAutomator2] [UIAutomator2] 在 com.android.commands.am.Am.onRun(Am.java:80) [调试] [UiAutomator2] [UIAutomator2] 在 com.android.internal.os.BaseCommand。 run(BaseCommand.java:54) [debug] [UiAutomator2] [UIAutomator2] at com.android.commands.am.Am.main(Am.java:50) [debug] [UiAutomator2] [UIAutomator2] at com.android。 internal.os.RuntimeInit.nativeFinishInit(Native Method) [debug] [UiAutomator2] [UIAutomator2] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:371) [debug] [JSONWP Proxy] 匹配'/状态' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET]run(BaseCommand.java:54) [debug] [UiAutomator2] [UIAutomator2] at com.android.commands.am.Am.main(Am.java:50) [debug] [UiAutomator2] [UIAutomator2] at com.android。 internal.os.RuntimeInit.nativeFinishInit(Native Method) [debug] [UiAutomator2] [UIAutomator2] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:371) [debug] [JSONWP Proxy] 匹配'/状态' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET]run(BaseCommand.java:54) [debug] [UiAutomator2] [UIAutomator2] at com.android.commands.am.Am.main(Am.java:50) [debug] [UiAutomator2] [UIAutomator2] at com.android。 internal.os.RuntimeInit.nativeFinishInit(Native Method) [debug] [UiAutomator2] [UIAutomator2] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:371) [debug] [JSONWP Proxy] 匹配'/状态' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET]371) [调试] [JSONWP 代理] 将“/status”与命令名称“getStatus”匹配 [debug] [JSONWP 代理] 将 [GET /status] 代理到 [GET]371) [调试] [JSONWP 代理] 将“/status”与命令名称“getStatus”匹配 [debug] [JSONWP 代理] 将 [GET /status] 代理到 [GET] http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read" [debug] [JSONWP Proxy] 将“/status”与命令名称“getStatus”相匹配 [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]与没有正文 [JSONWP 代理] 得到了一个意外的响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status' 到命令name 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET] http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status'命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno ":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET] /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status'命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno ":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET] /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status'命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno ":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET] /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status'命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno ":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET] /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status'命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno ":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET] /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read" [debug] [JSONWP Proxy] 将“/status”与命令名称“getStatus”相匹配 [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno ":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP Proxy] 匹配 '/status' 到命令名称 'getStatus' [debug] [JSONWP Proxy] 代理 [GET] /status] 到 [GET http://localhost:8200/wd/hub/status]与没有正文 [JSONWP 代理] 得到了一个意外的响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status' 到命令name 'getStatus' [debug] [JSONWP Proxy] 代理 [GET /status] 到 [GET http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [JSONWP 代理] 匹配 '/status'命令名称 'getStatus' [debug] [JSONWP 代理] 将 [GET /status] 代理到 [ http://localhost:8200/wd/hub/status]没有正文的 [JSONWP 代理] 得到一个意外响应:{"errno":"ECONNRESET","code":"ECONNRESET", "syscall":"read"} [debug] [JSONWP Proxy] 将 '/status' 匹配到命令名称 'getStatus' [debug] [JSONWP Proxy] 将 [GET /status] 代理到 [GET] http://localhost:8200/wd/hub/status]没有正文 [JSONWP 代理] 得到意外响应:{"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"} [debug] [UiAutomator2] 删除 UiAutomator2 会话 [debug] [ UiAutomator2] 删除 UiAutomator2 服务器会话 [debug] [JSONWP Proxy] 匹配 '/' 到命令名称 'deleteSession' [UiAutomator2] 没有得到确认 UiAutomator2 deleteSession 工作;错误为:UnknownError:处理命令时发生未知的服务器端错误。原始错误:尝试在没有会话 ID 的情况下代理会话命令 [debug] [UiAutomator2] 将 IME 重置为 'com.touchtype.swiftkey/com.touchtype.KeyboardService' [debug] [ADB] Running ' /Users/infotmt/Library/Android/sdk/platform-tools/adb -P 5037 -s K3V4C18B16002402 shell settings delete global hidden_​​api_policy_pre_p_apps' [debug] [ADB] Running '/Users/infotmt/Library/Android-toolsd /adb -P 5037 -s K3V4C18B16002402 shell 设置删除全局 hidden_​​api_policy_p_apps' [debug] [BaseDriver] 事件 'newSessionStarted' 记录于 1549963457849 (15:09:17 GMT+0545) [Cdebug] 内部错误 [尼泊尔时间]运行命令:UnknownError:处理命令时发生未知的服务器端错误。原始错误:无法将命令代理到远程服务器。原始错误:错误:读取 ECONNRESET [debug] [W3C] at JWProxy.command (/usr/local/lib/node_modules/appium/node_modules/appium-base-driver/lib/jsonwp-proxy/proxy.js:236:13 ) [HTTP] <

Java错误日志

org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。请检查服务器日志以获取更多详细信息。原始错误:处理命令时发生未知的服务器端错误。原始错误:无法将命令代理到远程服务器。原始错误:错误:读取 ECONNRESET 构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'Suban12.local',ip: 'fe80:0:0:0:486:de1:7ae1:b02d%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.版本:'1.8.0_202' 驱动程序信息:driver.version:AndroidDriver 远程堆栈跟踪:UnknownError:处理命令时发生未知的服务器端错误。原始错误:无法将命令代理到远程服务器。

WebDriverException:处理命令时发生未知的服务器端错误。原始错误:无法将命令代理到远程服务器。原始错误:错误:读取 ECONNRESET 构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'Suban12.local',ip: 'fe80:0:0:0:486:de1:7ae1:b02d%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.版本:'1.8.0_202' 驱动程序信息:driver.version:AndroidDriver 远程堆栈跟踪:UnknownError:处理命令时发生未知的服务器端错误。原始错误:无法将命令代理到远程服务器。原始错误:错误:在 JWProxy 读取 ECONNRESET。

Sub*_*ako 10

我找到了这个问题的答案。解决方案是从设备中删除io.appium.uiautomator2.serverio.appium.uiautomator2.server.test

  1. 确保 appium 服务器没有执行。
  2. 使用 USB 连接您的 android 设备,并使用以下命令验证设备是否已正确连接:
    adb devices
    
    Run Code Online (Sandbox Code Playgroud)
  3. 执行以下命令:
    adb uninstall io.appium.uiautomator2.server
    adb uninstall io.appium.uiautomator2.server.test
    
    Run Code Online (Sandbox Code Playgroud)
  4. 启动 appium 服务器
  5. 开始执行 appium 测试用例

  • 这并没有解决我的问题。我在并行运行测试时得到这个,有什么帮助吗? (3认同)
  • 当套接字挂起时这会有所帮助。 (3认同)
  • 使用这些命令后我的问题得到解决,谢谢伙伴。 (2认同)