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

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

如题,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
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。