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

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

在使用 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 回复

多谢

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