1.环境准备
1.1 安装HDC
HDC是通过DevEco Studio安装的
DevEco Studio下载路径:下载中心 | 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态
安装DevEco Studio后,配置HDC环境变量:
# Harmony
HARMONY_SDK_HOME=/Applications/DevEcoStudio.app/Contents/sdk/default/openharmony
export HARMONY_SDK_HOME
export HARMONY_NDK_HOME=$HARMONY_SDK_HOME/native
export PATH=$PATH:$HARMONY_SDK_HOME/toolchains
PS:路径一般是默认的,路径确认方法:应用程序—>DevEco Studio—>显示包内容
1.2 安装hypium库
下载路径:下载hypium
下载文件如下:
解压后看到hypium-5.1.5.200.zip
再次解压hypium-5.1.5.200.zip,可以看到4个.tar.gz文件
进入hypium-5.1.5.200文件夹,执行:
pip3 install xdevice-5.1.5.200.tar.gz
pip3 install xdevice-devicetest-5.1.5.200.tar.gz
pip3 install xdevice-ohos-5.1.5.200.tar.gz
pip3 install hypium-5.1.5.200.tar.gz
1.3 安装调试工具Hypium插件
在Pycharm上安装DevEco Testing Hypium插件后,方便调试,找鸿蒙demo的元素
刚才下载下来的包中第一次解压后有一个文件:DevEco Testing Hypium件离线安装包
安装方法:打开pycharm,点击File -> Settings -> Plugin -> 齿轮图标 -> Install Plugin from Disk -> 选中“DevecoTesting-Hypium-5.1.5.200.zip”
配置hdc路径:
安装完成后,在pycharm 的右边会有插件图标:
插上设备
选择设备,点击【确定】后,就可以操作设备了
2. demo元素的查找
点击“放大镜搜索”按钮,在操作元素,会在右边出现元素信息
3.录制脚本
点击“摄像机”按钮,进入录制状态,操作demo控件,会在右边的文件中自动生成脚本
4.自动化脚本编写
- 创建driver
from hypium import *
driver=UiDriver.connect(device_sn="23E0223C13000090")
device_sn的获取:hdc list targets
在工程中的封装:
HDC_PATH="/Applications/DevEcoStudio.app/Contents/sdk/default/openharmony/toolchains/hdc"
@staticmethod
def get_ohos_devices() -> list:
result = []
ohos_lines = os.popen(HDC_PATH + " list targets")
for l in ohos_lines:
if len(l)>8:
result.append(l[:-1])
print("get_ohos_devices:主机上的ohos设备:{}".format(result))
return result
PS:当没有设备的时候,鸿蒙的hdc会返回一个[Empty],会导致当设备为空时,传“[Empty]”给调用函数,所以用长度来控制
其他操作场景举例:
driver = UiDriver.connect(device_sn=device_sn)
#关闭app
driver.stop_app("com.netease.rtcdemo")
#卸载app
driver.uninstall_app("com.netease.rtcdemo")
#等待
driver.wait(5)
#安装app
driver.install_app(app_path)
#启动app
driver.start_app("com.netease.rtcdemo")
#授权
driver.touch(BY.key('permission_dialog_allow_button'))
#查找到第一个输入框,并输入内容
channel_name=driver.find_all_components(BY.type("TextInput"),0)
driver.input_text(channel_name,"2025070701")
#点击
driver.touch(BY.text('Join'))
#按下返回键
driver.press_back()
还有其他一些比如滑动、拖拽等操作,直接进入到uidriver.py中查看
全面的了解这个插件可以查看官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines
PS:官网介绍的是创建一个完整结构的UI自动化测试架构,本篇文章的内容更适合在已有框架中兼容鸿蒙的场景
5.指令
获取设备deviceid:hdc list targets (获得deviceid)
获取设备uuid:hdc shell bm get -u
安装app:hdc install app (有多个设备时用-t指定 hdc -t deviceid install app)
卸载app:hdc uninstall app (有多个设备时用-t指定 hdc -t deviceid install app)
获取设备ip:hdc shell ifconfig
查找包名:hdc shell bm dump -a | grep package name
hdc命令可以查看官网:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hdc
鸿蒙用的包管理工具是bm,指令可见官网:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/bm-tool