Appium 服务器被关闭,因为没有新的命令进来
Posted
技术标签:
【中文标题】Appium 服务器被关闭,因为没有新的命令进来【英文标题】:Appium server is shut down because no new commands came in 【发布时间】:2017-05-05 16:52:22 【问题描述】:我在 Windows 机器上使用 Appium 实现 android 原生应用自动化。我所有的场景都做得很好,但有时应用程序崩溃了,Appium 停止说“在 60 秒内没有收到新命令,正在关闭”。
注意 - 如果我明确地按下键盘上的任何键,它将在黄瓜执行时执行下一个命令。
我可以看到 Appium 正在发送查找元素的请求,但没有收到任何响应。我不知道为什么会这样,但同样的事情大多没有任何问题。发生此问题时,Appium 会关闭应用程序,接下来的场景也会失败。
有人帮忙解决这个问题。
这是 Appium 服务器日志:
信息:启动应用程序 信息:[调试] 试图杀死所有 'uiautomator' 进程 信息:[调试] 使用“uiautomator”获取所有进程 信息:[调试] 执行 cmd:C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "ps 'uiautomator'" 信息:[调试] 未找到匹配的进程 信息:[调试] 运行引导 信息:[调试] 生成:C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap - e pkg com.paragyte.publicpartnerships.test -e disableAndroidWatchers false 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:numtests=1 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:流= 信息:[调试] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap: 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:id=UiAutomatorTestRunner 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:test=testRunServer 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:class=io.appium.android.bootstrap.Bootstrap 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:当前=1 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:1 信息:[调试] [BOOTSTRAP] [调试] 在端口 4724 上打开的套接字 info: [debug] [BOOTSTRAP] [debug] Appium Socket Server Ready 信息:[调试] 如果设备不活动,则唤醒设备 信息:[调试] 将命令推送到 appium 工作队列:[“wake”,] 信息:[调试] [BOOTSTRAP] [调试] 正在加载 json... 信息:[调试] [BOOTSTRAP] [调试] json 加载完成。 info: [debug] [BOOTSTRAP] [debug] 注册的崩溃观察者。 信息:[调试] [BOOTSTRAP] [调试] 客户端已连接 信息:[调试] [BOOTSTRAP] [调试] 从客户端获取数据:"cmd":"action","action":"wake","params": info: [debug] [BOOTSTRAP] [debug] 得到了 ACTION 类型的命令 信息:[debug] [BOOTSTRAP] [debug] 得到命令操作:wake 信息:[debug] [BOOTSTRAP] [debug] 返回结果:"value":true,"status":0 info: [debug] 执行 cmd: C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "dumpsys window"
信息:[调试] 屏幕已解锁,继续。 信息:[调试] 将命令推送到 appium 工作队列:[“getDataDir”,] 信息:[调试] [BOOTSTRAP] [调试] 从客户端获取数据:"cmd":"action","action":"getDataDir","params": info: [debug] [BOOTSTRAP] [debug] 得到了 ACTION 类型的命令 信息:[debug] [BOOTSTRAP] [debug] 得到命令操作:getDataDir 信息:[debug] [BOOTSTRAP] [debug] 返回结果:"value":"/data/local/tmp","status":0 信息:[debug] dataDir 设置为:/data/local/tmp 信息:[debug] 将命令推送到 appium 工作队列:["compressedLayoutHierarchy","compressLayout":false] info: [debug] [BOOTSTRAP] [debug] 从客户端获取数据:"cmd":"action","action":"compressedLayoutHierarchy","params":"compressLayout":false info: [debug] [BOOTSTRAP] [debug] 得到了 ACTION 类型的命令 信息:[debug] [BOOTSTRAP] [debug] 得到命令操作:compressedLayoutHierarchy 信息:[debug] [BOOTSTRAP] [debug] 返回结果:"value":false,"status":0 信息:[调试] 获取设备 API 级别 info: [debug] 执行 cmd: C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "getprop ro.build.version.sdk"
信息:[调试] 设备处于 API 级别 19 信息:[调试] 执行 cmd:C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.paragyte.publicpartnerships.test/com.paragyte.publicpartnerships.SplashActivity"
信息:[调试] 等待 pkg "com.paragyte.publicpartnerships.test" 和活动 "com.paragyte.publicpartnerships.SplashActivity" 得到关注 信息:[调试] 获得重点包和活动 info: [debug] 执行 cmd: C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "dumpsys window windows"
info: [debug] 执行 cmd: C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "getprop ro.build.version.release"
信息:[debug] 设备版本为 4.4.2 信息:[调试] 设备启动!准备好命令 info: [debug] 将命令超时设置为默认值 60 秒 信息:[调试] Appium 会话开始于 sessionId 00bd22a6-7f2e-435b-a6af-53f5bf115a2c 信息: 信息:--> GET /wd/hub/session/00bd22a6-7f2e-435b-a6af-53f5bf115a2c
info: [debug] 成功响应客户端:"status":0,"value":"platform":"LINUX","browserName":"","platformVersion":"4.4.2" ,"webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":,"desired":" appiumVersion":"1.6.0","platformName":"Android","platformVersion":"4.4.2","browserName":"","deviceName":"Samsung Galaxy S4 Emulator","app":" D:\Automation\Mobile\apk_files/app-debug.apk","name":"Time 4 Care","appiumVersion":"1.6.0","platformName":"Android","deviceName":" 300450adeedc3100","app":"D:\Automation\Mobile\apk_files/app-debug.apk","name":"Time 4 Care","sessionId":"00bd22a6-7f2e-435b-a6af-53f5bf115a2c"
信息:
信息:--> GET /wd/hub/status
info: [debug] 成功响应客户端:"status":0,"value":"build":"version":"1.4.13","revision":"c75d8adcb66a75818a542fe1891a34260c21f76a" "sessionId":"00bd22a6-7f2e-435b-a6af-53f5bf115a2c"
信息:
信息:--> POST /wd/hub/session/00bd22a6-7f2e-435b-a6af-53f5bf115a2c/timeouts/implicit_wait "ms":0 info: [debug] 将 Android 隐式等待设置为 0ms
info: [debug] 成功响应客户端:"status":0,"value":null,"sessionId":"00bd22a6-7f2e-435b-a6af-53f5bf115a2c"
信息:
信息:--> POST /wd/hub/session/00bd22a6-7f2e-435b-a6af-53f5bf115a2c/appium/device/press_keycode "keycode":93 info: [debug] 将命令推送到 appium 工作队列:["pressKeyCode","keycode":93,"metastate":null]
info: [debug] [BOOTSTRAP] [debug] 从客户端获取数据:"cmd":"action","action":"pressKeyCode","params":"keycode":93,"metastate" :null
info: [debug] [BOOTSTRAP] [debug] 得到了 ACTION 类型的命令 信息:[debug] [BOOTSTRAP] [debug] 得到命令操作:pressKeyCode 信息:[debug] [BOOTSTRAP] [debug] 返回结果:"value":true,"status":0
info: [debug] 成功响应客户端:"status":0,"value":true,"sessionId":"00bd22a6-7f2e-435b-a6af-53f5bf115a2c" 信息:
信息:[调试] 60 秒内未收到新命令,正在关闭... 信息:关闭 appium 会话 info: [debug] 按下 HOME 键
info: [debug] 执行 cmd: C:\Users\PG106\AppData\Local\Android\sdk\platform-tools\adb.exe -s 300450adeedc3100 shell "input keyevent 3"
信息:[调试] 停止 logcat 捕获 信息:[调试] Logcat 以代码 null 终止,信号 SIGTERM 信息:[调试] [BOOTSTRAP] [调试] 从客户端获取数据:"cmd":"shutdown" info: [debug] [BOOTSTRAP] [debug] 得到 SHUTDOWN 类型的命令 信息:[debug] [BOOTSTRAP] [debug] 返回结果:"value":"OK,正在关闭","status":0 信息:[调试] [BOOTSTRAP] [调试] 关闭客户端连接 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:numtests=1 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:流=。 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:id=UiAutomatorTestRunner 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:test=testRunServer 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:class=io.appium.android.bootstrap.Bootstrap 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:当前=1 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:0 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:流= info: [debug] [UIAUTOMATOR STDOUT] WatcherResultPrinter=.的测试结果 信息:[调试] [UIAUTOMATOR STDOUT] 时间:63.073 信息:[调试] [UIAUTOMATOR STDOUT] OK(1 次测试) 信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:-1 info: [debug] 发送关机命令,等待 UiAutomator 停止... info: [debug] UiAutomator 正常关闭 信息:[调试] 清理 android 对象 信息:[调试] 清理 appium 会话 info: [debug] 我们关闭了,因为没有新命令进来
谢谢, 卡皮尔
【问题讨论】:
你能格式化你的输出吗?没有换行符就很难阅读 我已经格式化了我的输出。这很容易阅读。你能帮我解决这个问题吗? 【参考方案1】:您是否尝试过将所需的能力设置为更高的数字?当前设置为什么?
desiredCapabilities.setCapability("newCommandTimeout", 10000);
【讨论】:
以上是关于Appium 服务器被关闭,因为没有新的命令进来的主要内容,如果未能解决你的问题,请参考以下文章