目前我司主要业务都是 flutter 写的,目前还遇到一些问题,大概讲一下自己使用体会。

一 、Flutter 自动化痛点

  1. 元素定位能力弱,外部获取元素方式不同,appuim inspect 功能去 dump 页面元素时发现很多元素会被合并成一个区域块。
  2. 元素布局嵌套路径深。
  3. flutter 的快速开发,需持续更新,随着 android、ios 等系统更新也会带来一些兼容性问题。
  4. 官方提供 flutter driver、integration test 对混合栈 支持不成熟 不能批量操作元素,一旦 finder 定位到的元素超过 1 个时,就会抛出异常。 熟悉 dart 编程,结合源码去写脚本,代码维护成本比较高(类似 Espresso) 官方已经放弃维护 flutter driver

二 、解决方案

目前了解到的部分使用 airtest ,通过图像识别,来定位校验。 个人觉得过于依赖图像识别,运行效率以及准确度都差强人意。 另一种方式:借助原生框架如 uiautomator2、 wda 的原生定位能力, 获取 name xpath label id test classname , 获取不到的使用图像识别技术弥补。sonic 是很好的选择。

三 、实际应用中遇到的问题

  1. 元素嵌套路径过深,xpath 绝对路径太长,相对路径不易维护
  2. 通过 xpath 获取到输入框可以点击,无法填充内容
  3. dump 页面元素时发现很多元素会被合并成一个区域块

第一个问题,跟开发讨论过,直接加 key,没有效果。 目前在控件中 增加 semantics label 可以给控件增加唯一标识信息。 但是这个标识只会显示在 content-desc 里。 目前还没找到可以添加到 resource-id 或者其它字段的方法。目前已经给作者提了需求,来获取 content-desc 内容去校验结果。
第二个问题,本来以为是 appium 的问题,后来发现是 flutter 版本过低,当时用的 2.5 吧貌似, 后面升级到最新版本就可以解决了,看来 flutter 也再不断的去适应大众需求。
第三个问题,目前还没解决,不知道包一层 semantics 是否可以,后续再让开发调试看看。

四、结合 sonic 的 使用感受

目前整体来说,点击处理没什么问题, 校验结果还需要 Sonic 支持更多的功能。 还是希望未来 sonic 能有更好的方案来对接 flutter 应用的测试。 在这里也强烈安利下 Sonic。 很好的开源项目,期待大家一起共建!!

(大家在 flutter 测试中,有什么更好的方法,也可以留言交流学习一下。)


↙↙↙阅读原文可查看相关链接,并与作者交流