Appium 为什么经常会出这个问题? An unknown server-side error occurred while processing the command

醋精测试媛 · 2020年11月12日 · 最后由 醋精测试媛 回复于 2020年11月13日 · 11972 次阅读

在使用 Appium 进行 app 自动化测试中,我最经常遇到的问题是突然中断,日志显示原因是:

selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up

请问这个是由于什么原因造成的呢?有时候是脚本下一步是点击,它没有点击,过几秒就自动退出 app 了,显示这个错误。
完整的日志如下:

为什么我经常会出这个问题呢?是不是脚本哪里写的不对?还是设计架构的问题?

关于这个"automationName": "UiAutomator2", 我设置 1 还是 2 都会出这个问题, 而且是偶现的 bug,不是必定会出的 bug。

共收到 14 条回复 时间 点赞
醋精测试媛 关闭了讨论 11月12日 09:53
醋精测试媛 重新开启了讨论 11月12日 10:10

不小心点击了关闭讨论,不好意思

Message: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to remote server. Original error: Error: socket hang up

解决办法:

  1. 在设置 -> 电池 -> 后台高耗电, 把 appium 相关的 app 都加上或者设置成不限制运行。因为 appium 进程会因为长时间运行或者高耗电被系统杀掉
  2. 代码里直接删除手机上安装的 AppiumSettings。再启动 appium,会自动再安装 AppiumSettings
对 Anson 回复

你好,我尝试过在手动卸载 appium settings,但是很快还是出了这个问题,appium setting 的删除和再启动与 appium socket hang up 有什么关系呢

在执行这个脚本,然后的打开手机的 log 进行打印,查看下是哪个 kill 了手机的 ui2server,然后在通过 pid 查找到包名,通过命令 adb shell pm uninstall -k --user 0 ,删除掉这个 app。这是一种方法。另外一种就是重新在新建一个 session。

对 chenyouan 回复

这是偶现的 bug,并不是每次都能获取到,新建 session 有时候还是会出问题

就是偶现你才要打印 log 或者你在测试记录中,打印 appium 的请求,到时出现了,你就可以看到请求的结果就是你这个提示。基本你运行久了就会出现这个问题或者请求过多。

最重要是电池选项里设置不要杀掉进程,然后代码里删除 appium settings。我很少会出现 hang up 了现在

对 Anson 回复

好的,多谢,可能是手机问题,我的手机暂时没找到高耗电杀死进程的设置

对 chenyouan 回复

好的,谢谢,确实是运行时长很长的时候才会出现这个 bug,我多运行几次试试

对 chenyouan 回复

你好,我还想补充问一下为什么请求过多会崩掉呢,是 appium 服务端的问题吗

不是,应该是手机问题,访问频繁,可能被系统认为有风险的软件,才会被手机系统干掉。主要现在都是要通过 UI2server,所以这个请求频繁,会被系统五杀。但你通过重启 session,简历 ui2 连接,就不会存在这个问题了。然后把手机的监控软件卸载掉。

对 chenyouan 回复

当我使用"automationName": "UiAutomator1"或者干脆不设置时,也会偶尔有这个问题。

你只要用新版的就会,你如果用 1.13 左右的版本就不会,旧版默认的驱动使用的 androddriver。

对 chenyouan 回复

多谢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。