動態

詳情 返回 返回

HarmonyOS Next UI測試框架API總結 - 動態 詳情

HarmonyOS Next UI測試框架API總結

HarmonyOS Next中UiTest提供模擬UI操作的能力,供開發者在測試場景使用,主要支持如點擊、雙擊、長按、滑動等UI操作能力,該模塊提供以下功能:

  • On:提供控件特徵描述能力,用於控件篩選匹配查找。
  • Component:代表UI界面上的指定控件,提供控件屬性獲取,控件點擊,滑動查找,文本注入等能力。
  • Driver:入口類,提供控件匹配/查找,按鍵注入,座標點擊/滑動,截圖等能力。
  • UiWindow:入口類,提供窗口屬性獲取,窗口拖動、調整窗口大小等能力。
  • By(deprecated):提供控件特徵描述能力,用於控件篩選匹配查找。從API version 9開始不再維護,建議使用On。
  • UiComponent(deprecated):代表UI界面上的指定控件,提供控件屬性獲取,控件點擊,滑動查找,文本注入等能力。從API version 9開始不再維護,建議使用Component。
  • UiDriver(deprecated):入口類,提供控件匹配/查找,按鍵注入,座標點擊/滑動,截圖等能力。從API version 9開始不再維護,建議使用Driver。
    這裏面可以看到很多API都已經被廢棄不在維護,UI自動測試框架主要提供了以下能力:
  • Driver:Ui測試的入口,提供查找控件,檢查控件存在性以及注入按鍵能力。
  • On:用於描述目標控件特徵(文本、id、類型等),Driver根據On描述的控件特徵信息來查找控件。
  • Component:Driver查找返回的控件對象,提供查詢控件屬性,滑動查找等觸控和檢視能力。
  • UiWindow:Driver查找返回的窗口對象,提供獲取窗口屬性、操作窗口的能力。

UI自動化的原理不外乎是查找控件,操作控件,HarmonyOS Next通過上述幾個對象對外提供操作UI能力。

Driver

Driver類作為UiTest測試框架的總入口,提供查找控件,注入按鍵,單擊座標,滑動控件,手勢操作,截圖等能力。

API 功能描述
create():Promise 靜態方法,構造Driver。
findComponent(on:On):Promise 查找匹配控件。
pressBack():Promise 單擊BACK鍵。
click(x:number, y:number):Promise 基於座標點的單擊。
swipe(x1:number, y1:number, x2:number, y2:number):Promise 基於座標點的滑動。
assertComponentExist(on:On):Promise 斷言匹配的控件存在。
delayMs(t:number):Promise 延時。
screenCap(s:path):Promise 截屏。
findWindow(filter: WindowFilter): Promise 查找匹配窗口。

其中assertComponentExist接口是斷言API,用於斷言當前界面存在目標控件;如果控件不存在,該API將拋出JS異常,使當前測試用例失敗。

import { describe, it} from '@ohos/hypium';
import { Driver, ON } from '@kit.TestKit';

export default function assertComponentExistTest() {
  describe('assertComponentExistTest', () => {
    it('Uitest_demo0', 0, async (done: Function) => {
      try{
        // create Driver
        let driver: Driver = Driver.create();
        // assert text 'hello' exists on current Ui
        await driver.assertComponentExist(ON.text('hello'));
      } finally {
        done();
      }
    })
  })
}

On

Ui測試框架通過On類提供了豐富的控件特徵描述API,用來匹配查找要操作或檢視的目標控件。On提供的API能力具有以下特點:

  • 支持匹配單屬性和匹配多屬性組合,例如同時指定目標控件text和id。
  • 控件屬性支持多種匹配模式(等於,包含,STARTS_WITHENDS_WITHREG_EXPREG_EXP_ICASE)。
  • 支持相對定位控件,可通過isBeforeisAfter等API限定鄰近控件特徵進行輔助定位。
API 功能描述
id(i:string):On 指定控件id。
text(t:string, p?:MatchPattern):On 指定控件文本,可指定匹配模式。
type(t:string):On 指定控件類型。
enabled(e:bool):On 指定控件使能狀態。
clickable(c:bool):On 指定控件可單擊狀態。
longClickable(l:bool):On 指定控件可長按狀態。
focused(f:bool):On 指定控件獲焦狀態。
scrollable(s:bool):On 指定控件可滑動狀態。
selected(s:bool):On 指定控件選中狀態。
checked(c:bool):On 指定控件選擇狀態。
checkable(c:bool):On 指定控件可選擇狀態。
isBefore(b:On):On 相對定位,限定目標控件位於指定特徵控件之前。
isAfter(b:On):On 相對定位,限定目標控件位於指定特徵控件之後。
id(i:string,p?:MatchPattern:On 指定控件id,可指定匹配模式。
hint(h:string, p?:MatchPattern):On 指定控件提示文本,可指定匹配模式。
type(t:string,p?:MatchPattern):On 指定控件類型,可指定匹配模式。
description(d:string,p?:MatchPattern):On 指定控件描述文本信息,可指定匹配模式。

Component

Component類代表了Ui界面上的一個控件,一般是通過Driver.findComponent(on)方法查找到的。通過該類的實例,用户可以獲取控件屬性,單擊控件,滑動查找,注入文本等操作。

Component包含的常用API:

API 功能描述
click():Promise 單擊該控件。
inputText(t:string):Promise 向控件中輸入文本(適用於文本框控件)。
scrollSearch(s:On):Promise 在該控件上滑動查找目標控件(適用於List等控件)。
scrollToTop(s:number):Promise 滑動到該控件頂部(適用於List等控件)。
scrollTobottom(s:number):Promise 滑動到該控件底部(適用於List等控件)。
getText():Promise 獲取控件text。
getId():Promise 獲取控件id。
getType():Promise 獲取控件類型。
isEnabled():Promise 獲取控件使能狀態。

UiWindow

UiWindow類代表了Ui界面上的一個窗口,一般是通過Driver.findWindow(WindowFilter)方法查找到的。通過該類的實例,用户可以獲取窗口屬性,並進行窗口拖動、調整窗口大小等操作。

UiWindow包含的常用API:

API 功能描述
getBundleName(): Promise 獲取窗口所屬應用包名。
getTitle(): Promise 獲取窗口標題信息。
focus(): Promise 使得當前窗口獲取焦點。
moveTo(x: number, y: number): Promise 將當前窗口移動到指定位置(適用於支持移動的窗口)。
resize(wide: number, height: number, direction: ResizeDirection): Promise 調整窗口大小(適用於支持調整大小的窗口)。
split(): Promise 將窗口模式切換為分屏模式(適用於支持分屏的窗口)。
close(): Promise 關閉當前窗口。

總結

本文介紹了HarmonyOS Next提供的UI自動化操作相關對象:Driver、On、Component、UiWindow對應的API能力,後續文章根據具體業務場景和頁面介紹這些API的具體操作步驟。

user avatar zourongle 頭像 jingmingdewudongmian_dscnyw 頭像 xiaoyuindebuilder 頭像 daxi_613eff614e117 頭像 georgegcs 頭像 kongxudexiaoxiongmao 頭像 hongmengbaixiaosheng 頭像 ihengshuai 頭像 timerrring 頭像 litao_2071 頭像 buyaomingdeshuilongtou_orcjl 頭像 chenzhuodelanqiu_cl1nlj 頭像
點贊 13 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.