HarmonyOS鸿蒙Next中UI自动化测试环境如何获取resourceManage来获得string.json的内容
HarmonyOS鸿蒙Next中UI自动化测试环境如何获取resourceManage来获得string.json的内容
比如 await driver.assertComponentExist(ON.text(‘密码登录’));
这里不想硬编码 ‘密码登录’,能否有办法通过类似 $r(`auth_sign_in_tab_password’)来访问?
【解决方案】
可以通过AbilityDelegator.getAppContext获取应用的Context,通过context获取资源管理,在测试脚本中,直接使用getContext()会报错"Error in xxx, Parameter error. The context is invalid."。示例代码如下:
let abilityDelegator: abilityDelegatorRegistry.AbilityDelegator;
abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator();
let context = abilityDelegator.getAppContext();
let value = await context.resourceManager.getStringValue($r('app.string.module_test_desc'))
console.log('value:' + value);
更多关于HarmonyOS鸿蒙Next中UI自动化测试环境如何获取resourceManage来获得string.json的内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,通过UIAbility
的context.resourceManager
获取ResourceManager对象。调用其getStringValue
方法并传入string.json
中的资源ID即可读取内容。示例代码:
let context = ... // 获取UIAbility上下文
let resourceMgr = context.resourceManager
resourceMgr.getStringValue($r('app.string.xxx').id)
需在UIAbility上下文中操作,注意资源ID的正确引用。
在HarmonyOS Next中,可以通过ResourceManager
获取string.json
中的字符串内容,用于UI自动化测试中避免硬编码。具体实现如下:
-
获取ResourceManager实例:
const context = getContext(this) as common.UIAbilityContext; const resourceMgr = context.resourceManager;
-
读取字符串资源:
let targetString = await resourceMgr.getString($r('app.string.auth_sign_in_tab_password').id);
-
在测试中使用动态字符串:
await driver.assertComponentExist(ON.text(targetString));
这种方法允许通过资源ID动态获取界面文本,提高测试代码的可维护性。注意确保资源ID与string.json
中定义的键名一致,且资源加载在组件初始化完成后进行。