国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

OpenHarmony UiTest測試用例開發實踐

系統 OpenHarmony
本文只是對UiTest接口做一個簡單的實踐,旨在讓開發者了解UiTest測試用例的開發流程以及部分接口介紹。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

前言

這篇文章主要對UiTest測試用例的開發做一個簡單的開發實踐。

概述

UiTest提供模擬UI操作的能力,供開發者在測試場景使用,主要支持如點擊、雙擊、長按、滑動等UI操作能力。

UiTest主要包含以下幾個關鍵、常用的類:

  • On:提供控件特征描述能力,用于控件篩選匹配查找。
  • Component:代表UI界面上的指定控件,提供控件屬性獲取,控件點擊,滑動查找,文本注入等能力。
  • Driver:入口類,提供控件匹配/查找,按鍵注入,坐標點擊/滑動,截圖等能力。
  • UiWindow:入口類,提供窗口屬性獲取,窗口拖動、調整窗口大小等能力。

開發步驟

打開應用

了解OpenHarmony應用工程結構的同學應該知道,每個模塊最終都會編譯成一個hap,例如我們最熟悉的entry模塊,而ohosTest模塊最終也會編譯成一個hap,并安裝在桌面上。

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

讀過上篇文章或者了解OpenHarmony應用開發的同學也知道,這個hap默認打開的是TestAbility中指定的頁面,而開發者如果想測試的是其他hap(例如筆者這里測試的是entry模塊編譯的hap),首先需要使用startAbility的方式進行拉起。

it(BUNDLE + 'StartAbility_001', 0, async function (done) {
  console.info(TAG, BUNDLE + 'StartAbility_001 begin')
  try {
    await abilityDelegator.startAbility({
      bundleName: 'com.example.myapplication',
      abilityName: 'EntryAbility'
    })
    done()
  } catch (exception) {
    console.info(TAG, `StartAbility_001 exception = ${JSON.stringify(exception)}`)
    expect().assertFail()
  }
  console.info(TAG, BUNDLE + 'StartAbility_001 end')
})

創建Driver對象

Driver類作為UiTest測試框架的總入口,在使用控件匹配/查找,按鍵注入,坐標點擊/滑動,截圖等能力之前,需要使用Driver.create()方法創建一個Driver對象。

let driver = Driver.create()

控件匹配、操作

On類提供了豐富的控件特征描述,可以指定某個控件的id、類型、文本內容等條件進行匹配,例如筆者這里分別給TextInput和Button組件設置了id,然后就可以使用ON.id()進行條件匹配。

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

也可以同時指定目標控制的id和type,例如:

ON.id('button').type('Button')

在查找目標控件之前,可以使用斷言API斷言當前界面是否存在滿足給出的目標屬性的控件,如不滿足則會報錯退出。

await driver.assertComponentExist(ON.id('textInput'))

在使用On類指定條件后,可以使用driver.findComponent()方法進行控件匹配,匹配成功后返回符合條件的Component對象,然后就可以使用Component類提供的方法進行點擊、滑動、注入文本等操作。

let textInput = await driver.findComponent(ON.id('textInput'))
await textInput.inputText('OpenHarmony');

運行效果

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

完整代碼

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'
import { Driver, ON } from '@ohos.UiTest'

const TAG = '[Sample_MyApplication]'
const BUNDLE = 'myApplication_'

const DELAY_TIME = 1000;

export default function abilityTest() {
  let driver = Driver.create()
  let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator()
  describe('ActsAbilityTest', function () {
    /**
     * 打開應用
     */
    it(BUNDLE + 'StartAbility_001', 0, async function (done) {
      console.info(TAG, BUNDLE + 'StartAbility_001 begin')
      try {
        await abilityDelegator.startAbility({
          bundleName: 'com.example.myapplication',
          abilityName: 'EntryAbility'
        })
        done()
      } catch (exception) {
        console.info(TAG, `StartAbility_001 exception = ${JSON.stringify(exception)}`)
        expect().assertFail()
      }
      console.info(TAG, BUNDLE + 'StartAbility_001 end')
    })

    it(BUNDLE + 'function_001', 0, async function () {
      console.info(TAG, BUNDLE + 'function_001 begin')
      await driver.delayMs(DELAY_TIME)
      // 向文本框控件中輸入文本
      await driver.assertComponentExist(ON.id('textInput'))
      let textInput = await driver.findComponent(ON.id('textInput'))
      await textInput.inputText('OpenHarmony');
      await driver.delayMs(DELAY_TIME)
      // 點擊按鈕
      await driver.assertComponentExist(ON.id('button'))
      let btn = await driver.findComponent(ON.id('button'))
      await btn.click();
      await driver.delayMs(DELAY_TIME)
      // 清空文本框控件的文本信息
      await textInput.clearText();
      console.info(TAG, BUNDLE + 'function_001 end')
    })
  })
}

常見問題

1、失敗日志有“execute timeout 15000ms”錯誤信息

問題分析

默認測試執行時長為15000ms,當測試用例執行超時就會自動退出并報該錯誤。

解決方法

在如下位置修改執行超時時長。

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

2、失敗日志有“uitest-api dose not allow calling concurrently”錯誤信息

問題分析

可能為報錯位置前面調用的異步接口沒有使用await調用,或者并行執行多個測試用例,導致前面的API沒有執行完,就調用了新的API。

解決方法

1.檢查用例實現,異步接口增加await調用。

2.避免多進程執行UI的測試用例。

結語

本文只是對UiTest接口做一個簡單的實踐,旨在讓開發者了解UiTest測試用例的開發流程以及部分接口介紹。UiTest除此之外還提供更加強大、更加復雜的能力,大家可以自行探索。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2021-12-22 10:19:47

鴻蒙HarmonyOS應用

2021-03-04 15:43:29

前端測試工具開發

2011-05-16 15:18:18

測試用例

2011-06-08 17:23:12

測試用例

2011-05-16 15:09:20

測試用例

2022-05-10 14:54:13

驗收標準測試用例

2011-04-18 10:46:39

接口測試

2011-07-04 18:06:52

測試用例

2011-12-23 17:03:29

性能測試用例設計

2022-01-19 17:48:57

測試用例開發

2020-08-25 08:03:59

測試Sharness結構

2011-05-16 14:54:12

測試用例

2011-09-01 10:05:24

PhoneGap應用程序測試

2022-06-13 09:00:00

Selenium測試Web

2023-09-04 17:48:06

2024-09-29 15:26:53

MySQLPython

2011-11-02 09:54:37

測試

2011-06-03 16:58:03

測試用例

2021-11-07 14:33:48

算法Pairwise功能

2025-05-27 01:45:00

DeepSeekPython測試
點贊
收藏

51CTO技術棧公眾號

国产精品美女久久| 成人黄色中文字幕| 天天影视久久综合| 国产精品另类一区| 一级日韩一区在线观看| 99久久婷婷这里只有精品| 欧美高清第一页| www 久久久| 中文字幕久热精品在线视频| 无遮挡在线观看| 欧美日韩一本到| 国产一二在线观看| 欧美日韩精品中文字幕| 美女视频黄a视频全免费观看| 欧美激情一区三区| 天天综合天天操| 国产精品护士白丝一区av| 精品少妇无遮挡毛片| 久久人人97超碰com| 丰满少妇在线观看| 国产精品萝li| 亚洲精品国产成人久久av盗摄 | 欧美一区二区三区在线| 男人添女荫道口图片| 久久这里只有精品首页| 五月婷婷六月丁香激情| 在线观看不卡一区| 四虎成人在线| 日韩欧美精品一区二区| 久热成人在线视频| 色综合久久网女同蕾丝边| 日韩www在线| 国产精品对白| 狠狠色噜噜狠狠狠狠色吗综合| 日韩精品一二区| 成人免费视频77777| 91精品国产综合久久蜜臀| 亚州一区二区| 久久精品综合一区| 午夜免费久久看| 亚洲a级精品| free性亚洲| 国内精品久久久久久中文字幕| 不卡一区二区在线| 成人做爰视频www| 男人天堂1024| 精品国产31久久久久久| 日本精品裸体写真集在线观看| 日韩av在线网址| 亚洲午夜精品| 国产高清一区二区三区| 久久99精品国产.久久久久久| 青青青国产在线观看| 欧美片在线播放| 成人三级av在线| 天天干天天色天天爽| 亚洲国产精品久久艾草纯爱| 精品女同一区二区三区在线观看| 91亚洲精品久久久久久久久久久久| 国产精品va在线观看视色 | 成人午夜激情片| 免费观看一二区视频网站| 亚洲精品在线一区二区| 欧美日韩中文一区二区| 国产一二三区在线播放| 欧美精品自拍偷拍| 久久久久久久久丰满| 天天综合网久久| 深夜福利91大全| 日本va欧美va欧美va精品| 二区三区在线| 97神马电影| 亚洲成av人片| 一本久久青青| 另类小说第一页| 中文字幕在线看视频国产欧美在线看完整| 亚洲国产激情| 在线播放中文字幕| 国产精品精品视频| 中文字幕制服丝袜成人av| av综合网址| mm131亚洲精品| 国产成人精品日本亚洲| 亚洲综合清纯丝袜自拍| aiai久久| 嫩草影院发布页| 国产美女91呻吟求| 色综合久久久久综合体桃花网| 欧洲杯半决赛直播| 亚洲欧洲闷骚av少妇影院| 成人网在线免费看| 欧美卡1卡2卡| 国产一区二区三区久久悠悠色av| 国产情侣一区二区三区| 黑人糟蹋人妻hd中文字幕| 亚洲3p在线观看| 一本一本大道香蕉久在线精品| 雨宫琴音一区二区三区| 中文字幕免费高清电视剧网站在线观看 | 日韩毛片高清在线播放| 97久久视频| 欧美一区久久久| caoporn97免费视频公开| 国产伦精品一区二区三区在线 | 中文在线a√在线8| 丝袜足脚交91精品| 午夜精品视频网站| 欧美久久久影院| 91原创在线视频| 国产一区观看| а√中文在线天堂精品| 超碰免费在线观看| 午夜免费福利在线| 亚洲精品第一区二区三区| 欧美激情视频一区二区三区不卡| 在线亚洲精品福利网址导航| 99久久99久久综合| 最新国产拍偷乱拍精品 | 精品亚洲永久免费精品| 午夜影院久久久| 国产欧美一区二区三区在线老狼| 久久在线精品| 极品中文字幕一区| 成人在线精品| 日本综合视频| 91大神在线网站| 五十度飞在线播放| 中文字幕第88页| 亚洲理论电影在线观看| 国产一区二区中文字幕免费看| 欧美—级高清免费播放| 欧美成人a∨高清免费观看| 精品国产乱码久久久久久天美| 专区另类欧美日韩| 成人在线视频一区二区| 国产成人精品一区二| 男女视频一区二区| 国产精品嫩草99av在线| 韩国一区二区三区在线观看| 奇米狠狠一区二区三区| 激情中国色综合| 一区二区日韩| 日本欧美不卡| 欧美在线一级| 国产激情综合| 免费观看一级欧美片| 国产盗摄——sm在线视频| segui88久久综合| 日韩av影片| 只有精品亚洲| 欧美一区一区| 香蕉国产成人午夜av影院| 国产一区网站| 亚洲女人av| 国产激情一区二区三区桃花岛亚洲| 国产成人在线网站| 亚洲九九爱视频| 日韩三级电影网址| 亚洲无av在线中文字幕| 欧美激情中文字幕在线| 国产精品高潮在线| 精品伦理一区二区三区| 国产乱子伦精品视频| 777.av| 最新国产露脸在线观看| 久久国产精品美女| 伊人影院久久| 另类小说欧美激情| 亚洲精品国产精品乱码不99| 国产午夜精品麻豆| 97婷婷涩涩精品一区| 欧美lavv| 三上悠亚在线观看二区| wwwww亚洲| 欧洲激情综合| 97精品电影院| 亚洲美女视频一区| 亚洲精品在线91| 97超级碰碰| 波多结衣在线观看| 这里有精品可以观看| 欧美精品播放| 一区二区三区四区在线| 在线成人免费网站| 国产在线播放一区二区| 国产字幕中文| 一道在线中文一区二区三区| 99久久久无码国产精品| 日韩高清欧美高清| 久久久精品国产一区二区三区| 国外亚洲成av人片在线观看| 国产精品亚洲成在人线| 国产精品一二一区| 精品国产sm最大网站免费看| 999久久久| 污污视频在线看| 日韩av电影天堂| 日韩欧美一级二级三级| 少妇特黄a一区二区三区 | 色综合久久久网|