HarmonyOS Next UI测试入门
HarmonyOS Next提供的自动化测试框架arkxtest,支持JS/TS语言的单元测试框架(JsUnit)及UI测试框架(UiTest)。UiTest通过简洁易用的API提供查找和操作界面控件能力,支持用户开发基于界面操作的自动化测试脚本。本文介绍HarmonyOS Next
UI自动化框架实现原理
HarmonyOS Next中UI测试框架主要功能包括:
UI测试脚本编写
UI测试基于单元测试,UI测试脚本在单元测试脚本上增加了对UiTest接口。下面示例代码是实现的场景是:在启动的应用页面上进行点击操作,然后检测当前页面变化是否为预期变化。
编写Index.ets页面代码, 作为被测示例demo。
@Entry @Component struct Index { @State message: string = 'Hello World' build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) Text("Next") .fontSize(50) .margin({top:20}) .fontWeight(FontWeight.Bold) Text("after click") .fontSize(50) .margin({top:20}) .fontWeight(FontWeight.Bold) } .width('100%') } .height('100%') } }
在ohosTest > ets > test文件夹下.test.ets文件中编写具体测试代码。
import { describe, it, expect } from '@ohos/hypium'; // 导入测试依赖kit import { abilityDelegatorRegistry, Driver, ON } from '@kit.TestKit'; import { UIAbility, Want } from '@kit.AbilityKit'; const delegator: abilityDelegatorRegistry.AbilityDelegator = abilityDelegatorRegistry.getAbilityDelegator() const bundleName = abilityDelegatorRegistry.getArguments().bundleName; function sleep(time: number) { return new Promise<void>((resolve: Function) => setTimeout(resolve, time)); } export default function abilityTest() { describe('ActsAbilityTest', () => { it('testUiExample',0, async (done: Function) => { console.info("uitest: TestUiExample begin"); //start tested ability const want: Want = { bundleName: bundleName, abilityName: 'EntryAbility' } await delegator.startAbility(want); await sleep(1000); //check top display ability const ability: UIAbility = await delegator.getCurrentTopAbility(); console.info("get top ability"); expect(ability.context.abilityInfo.name).assertEqual('EntryAbility'); //ui test code //init driver const driver = Driver.create(); await driver.delayMs(1000); //find button on text 'Next' const button = await driver.findComponent(ON.text('Next')); //click button await button.click(); await driver.delayMs(1000); //check text await driver.assertComponentExist(ON.text('after click')); await driver.pressBack(); done(); }) }) }
UI测试能力总结
一般来说,在UI测试中,不管是网页还是Android还是iOS,实现的效果不外乎获取控件、操作控件、模拟点击、模拟触摸,模拟双击、长按、滑动等,一般对应有具体API做对应操作。
HarmonyOS Next中@ohos.UiTest
提供了以下能力:
- On:提供控件特征描述能力,用于控件筛选匹配查找。
- Component:代表UI界面上的指定控件,提供控件属性获取,控件点击,滑动查找,文本注入等能力。
- Driver:入口类,提供控件匹配/查找,按键注入,坐标点击/滑动,截图等能力。
- UiWindow:入口类,提供窗口属性获取,窗口拖动、调整窗口大小等能力。
- By(deprecated):提供控件特征描述能力,用于控件筛选匹配查找。从API version 9开始不再维护,建议使用On。
- UiComponent(deprecated):代表UI界面上的指定控件,提供控件属性获取,控件点击,滑动查找,文本注入等能力。从API version 9开始不再维护,建议使用Component。
- UiDriver(deprecated):入口类,提供控件匹配/查找,按键注入,坐标点击/滑动,截图等能力。从API version 9开始不再维护,建议使用Driver。
总结
本文介绍了HarmonyOS Next中UI自动化测试的能力,操作步骤等具体使用方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。