HarmonyOS鸿蒙Next中Hypium跳转应用内的页面
HarmonyOS鸿蒙Next中Hypium跳转应用内的页面 在写自动化测试代码时,因为有些页面路径太长经常失败,有没有什么方法可以直接跳转到对应的页面,类似于deeplink?hdc有相关的命令吗?
可以,思路就是让开发给目标页加一段 DeepLink 支持 → 在 Hypium 脚本里直接 hdc shell aa start 目前 Hypium 本身没有封装跳任意页的 API,只能借助系统 Ability 的显式跳转能力,步骤如下
1. 开发侧一次性改造
在要直达的 Ability(或 UIAbility)里新增一条 skills 即可,例如给「设置页」加 schema:
"abilities": [
{
"name": ".SettingsAbility",
"skills": [
{
"entities": ["entity.system.home"],
"actions": ["action.system.main"],
"uris": [
{
"scheme": "hypium", // 任意自定义
"host": "settings", // 任意自定义
"path": "/page/main" // 任意自定义
}
]
}
]
}
]
编译推包后,就能通过:
hdc shell aa start -a action.system.main -d hypium://settings/page/main
直接拉起该页,不需要经过首页逐级点击。
2. 测试脚本里调用(Python 为例)
Hypium 提供了 host.shell() 方法,可以执行任意 hdc 命令 :
from hypium import host
# 一键直达设置页
host.shell("hdc shell aa start "
"-a action.system.main "
"-d hypium://settings/page/main")
如果还要带参数,可在 URI 后面继续拼 queryString,在 Ability 的 onCreate(want) 里通过 want.uri.getQuery() 自行解析。
3. 多页批量测试技巧
- 把「scheme + host + path」三件套写进 Excel,循环拼命令即可批量回归。
- 若某些页在 router 里而非独立 Ability,就让开发在入口 Ability 里统一做一次「uri 路由分发」,同样可以用上述命令调过去,只要最终 router.pushUrl() 即可。
- 担心环境残留,可在命令后面加 --es cleanTask true(或代码里 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK))每次清栈。
更多关于HarmonyOS鸿蒙Next中Hypium跳转应用内的页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,Hypium测试框架通过Driver类实现应用内页面跳转。使用driver.pressBack()可返回上一页,driver.delay()控制操作间隔。页面跳转需依赖UI测试能力,通过组件定位和操作触发导航。Hypium提供on、run等关键字组织测试步骤,结合Component模块识别界面元素。测试脚本需在TestRunner中执行,支持异步操作同步化处理。
在HarmonyOS Next中,Hypium测试框架支持通过Intent方式直接启动应用内指定页面,类似DeepLink效果。可通过以下方式实现:
- 在测试代码中使用Intent设置目标页面的bundleName、abilityName和参数:
let intent = {
bundleName: "com.example.app",
abilityName: "MainAbility",
parameters: {"page": "target"}
};
hypiumTestContext.startAbility(intent);
- 在应用代码的对应Ability中,通过
onCreate或onNewIntent接收参数并跳转至目标页面。
目前hdc命令主要用于调试部署,页面跳转建议直接在Hypium测试代码中封装成公共方法,避免硬编码长路径。这种方式比直接使用页面路径更稳定,且能携带初始化参数。

