appium ios 长时间运行会出现手机重启解决方案

现象
  • 在跑ios脚本的时候老是出现动不动手机就重启导致脚本全部失败
  • 重启完手机之后手机没做任何操作又自动重启
  • 电脑非常卡,查看cpu占用已经到100%了,吓我一跳,使用top查看进程,有个进程在作怪, 这个命令是appium 集成libimobiledevice获取设备日志的一个进程,但是不是为什么这个进程在appium执行操作完成之后,为啥没被回收(感觉是appium的一个bug),导致ios设备不堪重负,一直重启,电脑的占用cpu也是一直居高不下
  501 19853     1   0 10:58上午 ??         5:10.83 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19880     1   0 10:59上午 ??         4:53.00 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19895     1   0 11:01上午 ??         4:39.21 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19920     1   0 11:03上午 ??         3:54.36 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19927     1   0 11:04上午 ??         3:52.78 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19937     1   0 11:05上午 ??         3:35.71 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19949     1   0 11:05上午 ??         3:16.59 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19961     1   0 11:07上午 ??         3:04.22 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19975     1   0 11:08上午 ??         2:48.37 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 19985     1   0 11:09上午 ??         2:40.48 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20007     1   0 11:10上午 ??         2:19.15 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20014     1   0 11:11上午 ??         2:12.81 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20024     1   0 11:11上午 ??         2:05.05 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20036     1   0 11:12上午 ??         1:54.01 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20046     1   0 11:14上午 ??         1:39.12 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20056     1   0 11:14上午 ??         1:31.80 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20071     1   0 11:16上午 ??         1:22.56 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20082     1   0 11:17上午 ??         1:06.29 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20093     1   0 11:18上午 ??         1:03.02 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20103     1   0 11:19上午 ??         0:54.19 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20114     1   0 11:19上午 ??         0:44.39 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
  501 20124     1   0 11:20上午 ??         0:42.61 idevicesyslog -u 012ec22eb08a01ba4350f427645358ac6a7ccbeb
解决办法
  • 两个地方需要解决
    • 注释调app pushlog 的方法,防止appium获取设备日志的时候内存溢出,导致服务失败,源码在/node_modules/appium/node_modules/appium-adb/build/lib/logcat.js的第155,156行

      // 处理内存溢出,不释放链接
      // this.logs.push(outputObj);
      // this.logsSinceLastRequest.push(outputObj);
      var isTrace = /W\/Trace/.test(output);
      if (this.debug && (!isTrace || this.debugTrace)) {
      log.debug(prefix + output);
    • 手动kill idevicesyslog 进程,防止进程大量堆积, 导致电脑和手机卡死,但是这样会失去一个功能,就是获取ios系统日志的功能Capability里面的showIOSLog功能,不过这个选项默认本来就是False的,所以没有用这个功能的同学大可放心

      def kill_idevicesyslog():
      """
      ios获取设备运行时log,appium运行时会占用大量的脚本机cpu,所以每次都杀死所有的idevicesyslog进程,可以有效防止ios设备运行卡死
      出现原因:由于每次appium启动ios配置服务时,会有一个获取ios log的cap参数clearSystemFiles,官网文档已删除,但是最新版的appium
      还是在使用这段代码,但是不走那个关闭逻辑了
      :param udid:
      :return:
      """
      command = "pkill idevicesyslog"
      subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,
      stderr=subprocess.PIPE).stdout.readlines()
      U.Logging.info("kill idevicesyslog succ")
    • 如果有出现的同学可以试试我厂的方法,我厂用此方法可以完美解决问题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值