华为三折叠手机 Mate XT 发布,届时搭载着纯血鸿蒙系统 HarmonyOS NEXT
正式推送给用户使用。该系统不再兼容Android
应用,这就意味着以前 Android 那套自动化测试框架都不能在该系统上运行。在此背景下,hmdriver2
应运而生。
现在我郑重介绍一下hmdriver2
:它是一款支持HarmonyOS NEXT
系统的 UI 自动化框架,无侵入式,提供应用管理,UI 操作,元素定位等功能,轻量高效,上手简单,快速实现鸿蒙应用自动化测试需求。
经过一段时间的调研、编码、实践,就在今天,hmdriver2
正式发布,代码已开源,欢迎提 PR 和 issue,动动你发财的手点点 Star ⭐️(你的 Star 是我迭代的动力)
https://github.com/codematrixer/hmdriver2
设计思想
-
无需提前在手机端安装 testRunner APP(类似 atx app)
-
在 PC 端编写 Python 脚本实现自动化
-
对齐 Android
uiautomator2
的脚本编写姿势
-
摒弃复杂依赖(几乎 0 依赖),即插即用
-
操作响应快,低延时
-
无侵入式
-
易上手
-
轻量高效
方案探索
在开发 hmdriver2 前,我对现有的鸿蒙自动化工具链进行了系列调研:
-
hdc
:类似 android 系统的 adb 命令,提供设备信息查询,包管理,调试相关的命令 -
@ohos.UiTest
:鸿蒙 sdk 的一部分,类似 android sdk 里的uiautomator
,基于 Accessibility 服务,提供模拟 UI 操作的能力。但是需要用arkTS
语言来写自动化 case,并且用例需要打包到被测 app 里面 -
hypium
:鸿蒙官方的自动化框架,功能比较完善,可以基于 python 编写自动化 case
为啥不用 hypium?
分析鸿蒙官方自动化工具链,我们发现hypium
已经具备了实现鸿蒙 Next 系统 UI 自动化能力,那直接用 hypium 就可行,为啥还要重复造轮子再搞一套?
深度体验 hypium 后发现,虽然它提供的能力已经比较全面了,但是还是有一些问题无法满足我的需求:
-
安装的依赖多,使用较繁杂,对用户不够友好,特别是小白用户
-
脚本执行效率较低,操作响应慢
-
未正式开源,无法共建,框架有 bug,等待官方修复时间确实太长。
于是决定自己写一套,说干就干!
1.0 版本
1.0 版本参考了 Android 端的 uiautomator2 自动化框架(这是一个很优秀的框架,不管是它的设计思路还是代码编写都值得借鉴),它的原理是在手机上运行了一个 http rpc 服务,将 android sdk 的