HarmonyOS鸿蒙Next中Hypium有什么办法快速获取当前页面的package name以及page_name
HarmonyOS鸿蒙Next中Hypium有什么办法快速获取当前页面的package name以及page_name
self.driver.start_app("com.huawei.hmos.settings","MainAbility")
如上代码,如果我打开一个app的一个页面,如何快速的获取到这个app的package_name以及page_name呢?我目前是用DevEco工具去获取的package_name,但是page_name不知道如何定位跟获取?各位有什么办法么?以前安卓,可以通过weditor直接获取到package_name,而且一般用不到page_name,但是Hypium目前看基本都需要有page_name,如何有更快捷的方式可以获取到当前页面的page_name
更多关于HarmonyOS鸿蒙Next中Hypium有什么办法快速获取当前页面的package name以及page_name的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【背景知识】
可使用hdc shell aa dump -l命令查看当前查看当前任务列表中的Ability信息。在返回的Ability中查找状态在FOREGROUND(前台)的Ability即为当前窗口展示的Ability。
C:\Users\xxx>hdc shell aa dump -l
User ID #100
current mission lists:{
Mission ID #117 mission name #[#com.xingin.xhs_hos:redbook:EntryAbility] lockedState #0 mission affinity #[]
AbilityRecord ID #1855
app name [com.xingin.xhs_hos]
main name [EntryAbility]
bundle name [com.xingin.xhs_hos]
ability type [PAGE]
state #FOREGROUND start time [90836358]
app state #FOREGROUND
ready #1 window attached #0 launcher #0
callee connections:
isKeepAlive: false
Mission ID #118 mission name #[#com.huawei.hmos.settings:phone_settings:com.huawei.hmos.settings.MainAbility] lockedState #0 mission affinity #[]
AbilityRecord ID #1864
app name [com.huawei.hmos.settings]
main name [com.huawei.hmos.settings.MainAbility]
bundle name [com.huawei.hmos.settings]
ability type [PAGE]
state #BACKGROUND start time [90857256]
app state #BACKGROUND
ready #1 window attached #0 launcher #0
callee connections:
isKeepAlive: false
}
在返回Ability信息current mission lists中app state为FOREGROUND里查找。 main name表示page_name。 bundle name表示package_name。
【解决方案】
- 手机成功连接PC,将需要获取package name以及page_name的应用打开置于前台。
- Hypium工程中,使用
self.driver.shell('aa dump -l')命令获取当前窗口展示的Ability信息并返回,取返回值中的main name即得到page_name ,取返回值中的bundle name即得到package_name。
代码示例如下:
self.driver.start_app("com.huawei.hmos.settings")
echo = self.driver.shell('aa dump -l')
main_name = echo.split('main name')[1].split()[0].split('[')[1].split(']')[0]
bundle_name = echo.split('bundle name')[1].split()[0].split('[')[1].split(']')[0]
print(main_name)
print(bundle_name)
【常见FAQ】
Q:如何获取当前页面的ability type、app state值?
A:可使用hdc shell aa dump -l命令查看当前查看当前任务列表中的Ability信息。在返回的current mission lists中app state为FOREGROUND提取ability type、app state值。
self.driver.start_app("com.huawei.hmos.settings")
echo = self.driver.shell('aa dump -l')
ability_type = echo.split('ability type')[1].split()[0].split('[')[1].split(']')[0]
app_state = echo.split('app state')[1].split()[0].split('#')[1]
Q:如何获取当前窗口?
A:根据当前打开的包名调用find_window()方法获取窗口名称。
self.driver.start_app("com.huawei.hmos.settings")
window = self.driver.find_window(WindowFilter().bundle_name("com.xingin.xhs_hos").actived(True))
更多关于HarmonyOS鸿蒙Next中Hypium有什么办法快速获取当前页面的package name以及page_name的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next的Hypium测试框架中,可通过driver.currentWindowHandle获取当前窗口句柄,再结合driver.getWindowProperties方法解析窗口属性来提取页面的bundleName(包名)和abilityName(页面名)。具体属性路径通常为windowProperties.bundleName与windowProperties.abilityName。
在HarmonyOS Next的Hypium测试框架中,可以通过driver.current_app属性快速获取当前页面的包名(package name)和页面名(page name)。
具体方法如下:
# 获取当前页面的应用信息
current_app_info = self.driver.current_app
# 提取包名
package_name = current_app_info.bundle_name
# 提取页面名(ability name)
page_name = current_app_info.ability_name
print(f"Package name: {package_name}")
print(f"Page name: {page_name}")
说明:
driver.current_app返回一个包含当前应用信息的对象。bundle_name对应应用的包名(package name)。ability_name对应页面的Ability名称,即你所需的page_name。
使用场景示例: 在你启动应用并进入某个页面后,直接调用上述代码即可获取当前页面的包名和Ability名,无需借助DevEco工具手动查找。
这种方式比通过工具手动获取更快捷,尤其适合在自动化测试脚本中动态识别和验证页面。

