首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

纯血鸿蒙系统 HarmonyOS NEXT自动化测试实践

  • 25-02-16 03:41
  • 3260
  • 7254
blog.csdn.net

1、测试框架选择

  • hdc:类似 android 系统的 adb 命令,提供设备信息查询,包管理,调试相关的命令
  • @ohos.UiTest:鸿蒙 sdk 的一部分,类似 android sdk 里的uiautomator,基于 Accessibility 服务,提供模拟 UI 操作的能力。但是需要用arkTS语言来写自动化 case,并且用例需要打包到被测 app 里面
  • hypium:鸿蒙官方的自动化框架,功能比较完善,可以基于 python 编写自动化 case
  • hmdriver2  一个鸿蒙自动化测试py库,安装方便,语法简洁

鸿蒙自动化测试的 文档中心

 文档中心hmdriver2 文档:https://github.com/codematrixer/hmdriver2

查看了文档后,发现hypium是官方的自动化框架,但是安装环境比较复杂,并且他是一整套的测试框架,包括了用例套件的管理与执行等,算是比较重量级的。

hmdriver2是一个轻量级的库,流程等都不复杂,先体验一下这个

2、环境配置

  1. 配置鸿蒙HDC环境(等价于 android 端的 adb)
    1. 下载 Command Line Tools 并解压
    2. hdc文件在command-line-tools/sdk/HarmonyOS-NEXT-DB2/openharmony/toolchains目录下
    3. 配置环境变量,macOS 为例,在~/.bash_profile 或者 ~/.zshrc 文件中添加
  1. export HM_SDK_HOME="/Users/develop/command-line-tools/sdk/HarmonyOS-NEXT-DB2" //请以sdk实际安装目录为准
  2. export PATH=$PATH:$HM_SDK_HOME/hms/toolchains:$HM_SDK_HOME/openharmony/toolchains
  3. export HDC_SERVER_PORT=7035

电脑插上手机,开启 USB 调试,确保执行hdc list targets 可以看到设备序列号

hdc常用命令  文档中心

2、安装hmdirver2 基础库

pip3 install -U hmdriver2

如果需要使用屏幕录屏 功能,则需要安装额外依赖opencv-python

  1. pip3 install -U "hmdriver2[opencv-python]"
  2. // 由于`opencv-python`比较大,因此没有写入到主依赖中,按需安装

3、代码编写

导入包后就可以连接设备,启动app,当前以安居客发布为例

  1. from hmdriver2.driver import Driver
  2. d = Driver("FMR0223C13000076")
  3. d.start_app("com.anjuke.home", "EntryAbility")

然后就可以进行元素定位和操作

元素定位支持

  • 控件查找(联合查找,模糊查找,相对查找)
  • 控件信息获取
  • 控件点击,长按,拖拽,缩放
  • 文本输入,清除
  • 获取控件树

控件查找支持这些by属性

  • id
  • key
  • text
  • type
  • description
  • clickable
  • longClickable
  • scrollable
  • enabled
  • focused
  • selected
  • checked
  • checkable
  • isBefore
  • isAfter

定位方式包括普通定位,模糊定位,相当定位

  1. d(text="tab_recrod")
  2. d(id="drag")
  3. # 定位所有`type`为Button的元素,选中第0个
  4. d(type="Button", index=0)
  5. # 定位`type`为Button且`text`为tab_recrod的元素
  6. d(type="Button", text="tab_recrod")
  7. # 定位`text`为showToast的元素的前面一个元素
  8. d(text="showToast", isAfter=True)
  9. # 定位`id`为drag的元素的后面一个元素
  10. d(id="drag", isBefore=True)

元素操作与信息获取

  1. d(text="tab_recrod").info
  2. # output:
  3. {
  4. "id": "",
  5. "key": "",
  6. "type": "Button",
  7. "text": "tab_recrod",
  8. "description": "",
  9. "isSelected": False,
  10. "isChecked": False,
  11. "isEnabled": True,
  12. "isFocused": False,
  13. "isCheckable": False,
  14. "isClickable": True,
  15. "isLongClickable": False,
  16. "isScrollable": False,
  17. "bounds": {
  18. "left": 539,
  19. "top": 1282,
  20. "right": 832,
  21. "bottom": 1412
  22. },
  23. "boundsCenter": {
  24. "x": 685,
  25. "y": 1347
  26. }
  27. }
  28. d(text="tab_recrod").click()
  29. d(type="Button", text="tab_recrod").click()
  30. d(text="tab_recrod").click_if_exists()
  31. d(text="tab_recrod").double_click()
  32. d(text="tab_recrod").long_click()
  33. # 控件拖拽
  34. componentB: ComponentData = d(type="ListItem", index=1).find_component()
  35. d(type="ListItem").drag_to(componentB) # 将元素拖动到元素B上
  36. # 控件缩放
  37. d(text="tab_recrod").pinch_in(scale=0.5)
  38. d(text="tab_recrod").pinch_out(scale=2)

更多操作请看详细文档https://github.com/codematrixer/hmdriver2或hmdriver2 发布:开启鸿蒙 NEXT 自动化新时代 · 测试之家

另外元素查找可使用 uiviewer工具

安装   pip3 install -U uiviewer

启动   python3 -m uiviewer

打开页面,选择设备,点击connect,连接设备

可查看ui树,定位元素,复制xpath或者rect(元素在屏幕位置)

点击dump hierarchy刷新页面

小demo

  1. from hmdriver2.driver import Driver
  2. d = Driver("FMR0223C13000076")
  3. d.start_app("com.anjuke.home", "EntryAbility")
  4. d(text="租房", index=0).click()
  5. for i in range(5):
  6. d.swipe(0.5, 0.7, 0.5, 0.5, speed=2000)
  7. d.go_home()

实际可以结合pytest等框架进行用例管理,报告输出等

鸿蒙自动化视频

注:本文转载自blog.csdn.net的夜阑卧听风吹雨,铁马冰河入梦来的文章"https://blog.csdn.net/lingxiyizhi_ljx/article/details/143585813"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top