iOS 测试 wda 跑抖音 ios 的自动化会卡死,有人遇到这种情况吗

唯品会小菜鸡 · 2022年03月03日 · 最后由 唯品会小菜鸡 回复于 2022年03月08日 · 8191 次阅读

如题,wda 跑抖音 ios 的自动化会卡死,触发滑动操作,抖音 app 就卡死动不了了,有人遇到这种情况吗

最佳回复

参考以前圣翔写过的 wda 提速文章 WebDriverAgent tap 接口速度优化(分析篇), wda 上耗时比较长甚至引起卡死的操作,一般是获取控件树,所以你可以减少获取控件树的频率或深度。

个人亲测在远程真机控制场景,控件树深度设置为 0,可以非常有效提升各种触控事件的响应速度,从默认深度 50 时的 2-3 秒甚至卡死,变为 1 秒内。

而且由于底层 XCUITest 获取控件树是带有推断逻辑的(个人猜测是为了应对各种 scroll view 场景下的元素查找),所以 scroll view 或者 table view 内置的元素数量比较多,也容易卡死。业务上遇到过一个登录页滚动背景,开发为了保障无限滚动,实现方式是 table view 中每个 cell 就是一个自动滚动长图,然后弄了 9999 个 cell 保障基本不可能滚动到末尾,导致 wda 获取时直接卡死。后面尝试调整为 99 个 cell ,获取速度立马提升到秒级。但这个从 ios 开发角度,table view 的 cell 是自带复用机制的,实际行数不管多少,实际渲染用的 cell 对象数量只会界面可见的最大行数 +1 这么多,所以按开发的认知,是不会觉得性能会出问题的(实际上只要不用 XCUITest dump 控件树,性能压根不会有任何问题)。

考虑到楼主不大可能让开发改源码适配,那以我个人认知,只能让 wda 控件树深度减少或者尽量不获取控件树来解决了。

共收到 16 条回复 时间 点赞

建议提供现场信息,机型、系统、app 版本、wda 日志

😂 老实说,你唯品会去跑抖音 APP 是什么目的?

那是因为抖音页面层级多,动效多

王稀饭 回复

iphone13,系统是 ios15,抖音是最新的版本

笑哼 回复

有啥好的解决办法吗

Jerry li 回复

哈哈哈

Jerry li 回复

不排除楼主要搞竞品评测自动化😂

应该是树结构太大,wda 一直有这个问题的。我们公司的产品有些界面,wda 也经常卡死。

参考以前圣翔写过的 wda 提速文章 WebDriverAgent tap 接口速度优化(分析篇), wda 上耗时比较长甚至引起卡死的操作,一般是获取控件树,所以你可以减少获取控件树的频率或深度。

个人亲测在远程真机控制场景,控件树深度设置为 0,可以非常有效提升各种触控事件的响应速度,从默认深度 50 时的 2-3 秒甚至卡死,变为 1 秒内。

而且由于底层 XCUITest 获取控件树是带有推断逻辑的(个人猜测是为了应对各种 scroll view 场景下的元素查找),所以 scroll view 或者 table view 内置的元素数量比较多,也容易卡死。业务上遇到过一个登录页滚动背景,开发为了保障无限滚动,实现方式是 table view 中每个 cell 就是一个自动滚动长图,然后弄了 9999 个 cell 保障基本不可能滚动到末尾,导致 wda 获取时直接卡死。后面尝试调整为 99 个 cell ,获取速度立马提升到秒级。但这个从 ios 开发角度,table view 的 cell 是自带复用机制的,实际行数不管多少,实际渲染用的 cell 对象数量只会界面可见的最大行数 +1 这么多,所以按开发的认知,是不会觉得性能会出问题的(实际上只要不用 XCUITest dump 控件树,性能压根不会有任何问题)。

考虑到楼主不大可能让开发改源码适配,那以我个人认知,只能让 wda 控件树深度减少或者尽量不获取控件树来解决了。

陈恒捷 回复

优秀,看到了想看到的答案,非常感谢

回复

对,应该是这样没错了

如果有精力, 可以尝试仿照 WDA 的项目结构重写 YourWDA, 抛弃很多对你们被测项目来说用不到的情况. 预计运行结果会快的飞起. 对自己也是个很大的锻炼.

chend 回复

好的,谢谢大佬

不获取 dom 树,改用图像识别或者 ocr 识别,或者限制获取 dom 树的层级

appium 有个自带的控制 source tree 的深度,叫 snapshotMaxDepth,可以用这个试试

回复

这个可以

唯品会小菜鸡 关闭了讨论 03月11日 18:18
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册