动态

详情 返回 返回

HarmonyOS Next UI測試入門 - 动态 详情

HarmonyOS Next UI測試入門

HarmonyOS Next提供的自動化測試框架arkxtest,支持JS/TS語言的單元測試框架(JsUnit)及UI測試框架(UiTest)。UiTest通過簡潔易用的API提供查找和操作界面控件能力,支持用户開發基於界面操作的自動化測試腳本。本文介紹HarmonyOS Next

UI自動化框架實現原理

HarmonyOS Next中UI測試框架主要功能包括:
image.png

UI測試腳本編寫

UI測試基於單元測試,UI測試腳本在單元測試腳本上增加了對UiTest接口。下面示例代碼是實現的場景是:在啓動的應用頁面上進行點擊操作,然後檢測當前頁面變化是否為預期變化。

  1. 編寫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%')
      }
    }
  2. 在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自動化測試的能力,操作步驟等具體使用方式。

user avatar youqingyouyidedalianmao 头像 evans_bo 头像 jinshidemaodou 头像 HarmonyOS5 头像 josie_68d213f999ae8 头像 wodekouwei 头像 lixingning 头像 gxx01 头像 opentiny 头像 jinshideshizi 头像 riacya12 头像 wsy996 头像
点赞 13 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.