chenhengjie
chenhengjie
> 偶现这个问题时,是否都恰好在 `app` 元素较多的页面? 查看了一下当时的日志,出现这个问题时,手机是在登录页面。完整控件树如下: ``` ``` 不知道这个算不算多,但目前并不是必现的,大部分情况下在这个界面是可以正常输入手机号什么的。不过没太理解,这个 panic 是因为控件多引起的吗?
> 这个不好约束,毕竟项目控件深度这个目前没有严格规范限制。我现在用的是 wda 的默认值(印象中是50)。而且这个问题并不是必现,一样的脚本这个问题只是偶现,所以因为这个问题调整 wda 的控件深度,有点不大合适。
@codeskyblue 看看?
可以直接提个 PR ?
暂时没有空弄这块耶。 另外,ws-scrcpy 要求 Android 5.0+ ,相比替换可能并存更合适,5.0以上用 ws-scrcpy ,5.0以下用原来的。
红蓝点卡住原因是 wda 对于滑动事件的响应慢,且容易超时变为500返回。响应慢的原因是经常 dump 控件树,dump 操作是非常耗时的(复杂页面10s以上很正常) 解决点: 1、远程控制页面连上设备后,把默认的控件树 dump 深度,改为0,可以显著提升滑动流畅度。缺点是如果有连上这个 wda 做 UI 自动化的需要,UI自动化侧需要重新把深度调回默认值,否则会因为控件树是空的导致全部控件查找失败。 参考操作: [把连接后默认设置的帧率改为30fps](https://github.com/openatx/atxserver2/commit/5a4d49090fc18f0da4e2cdc70088dbd395fdece7) 通过 get 请求访问 `/session//appium/settings` 即可看到完整的配置项,其中和控件深度有关的配置项带有 snapshot 关键字。 2、把wda响应超时时间延长(解决只有刷新后才有反应问题)。这个改动目前 ios provider 项目已有,更新代码后重启即可。
建议先确认下打包证书选择的对不对。现象上看像是证书过期。 默认免费的真机调试证书,有效期只有7天,7天后自动过期,过期后无法安装或启动。每次重新打包会重新生成一个新的证书(有效期是打包时开始算起的7天)。只有付费的有效期才长。 如果你本地既有免费的又有付费的(比如有不止一个 apple account 在 xcode 里登录),会容易搞混,建议是退出所有非付费的账号,避免搞混。
@heslowen 可以看看这个: https://www.liangqili.com/myGitbook/_book/articles/iOS/iosre/03_usbmuxd.html wda服务本身不具备采集性能的功能,采集性能是通过逆向 instruments 协议来做的,这个协议底层通过 usbmuxd 和设备通讯,和 wda 无关。
@linmscat 可以把 appium 失败时,命令行里 tidevice 运行日志也浮上来?
在公司里实际使用,卡顿的核心点有三个,优化后可以稳定达到30fps,不比商用的差。供参考: 1、连上设备后自动修改默认 fps ,从15改为30(目前最新代码已集成) 2、连上设备后,自动修改默认控件树递归深度,从50改为0。这样拖动等操作响应会快很多。 3、修改 wda 内置的屏幕清晰度设置项,将其改低,可以有效降低带宽压力,提高流畅度(特别是公司有多个办公地点的,或者用 wifi 连接的,效果会比较明显)。但此项不同大小的屏幕,有不同的最佳值,过低或过高也会卡,需要手动改 wda 源码探索。