UiTest
NOTE
The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.
Modules to Import
import {UiDriver,BY,MatchPattern} from '@ohos.uitest'
By
The UiTest framework provides a wide range of UI component feature description APIs in the By class to filter and match components. The API capabilities provided by the By class exhibit the following features:
-
Allows one or more attributes as the match conditions. For example, you can specify both the text and id attributes to find the target component.
-
Provides multiple match patterns for component attributes.
-
Supports absolute positioning and relative positioning for components. APIs such as isBefore and isAfter can be used to specify the features of adjacent components to assist positioning.
All APIs provided in the By class are synchronous. You are advised to use the static constructor BY to create a By object in chain mode, for example, BY.text('123').type('button').
enum MatchPattern
Enumerates the match patterns supported for component attributes.
System capability: SystemCapability.Test.UiTest
Name | Value | Description |
---|---|---|
EQUALS | 0 | Equal to the given value. |
CONTAINS | 1 | Contain the given value. |
STARTS_WITH | 2 | Start with the given value. |
ENDS_WITH | 3 | End with the given value. |
By.text
text(txt:string,pattern?:MatchPattern):By
Specifies the text attribute of the target component. Multiple match patterns are supported.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
txt | string | Yes | Component text, used to match the target component. |
pattern | MatchPattern | No | Match pattern. The default value is EQUALS. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.text('123') // Use the static constructor BY to create a By object and specify the text attribute
of the target component.
By.key
key(key:string):By;
Specifies the key attribute of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
key | string | Yes | Component key. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.key('123') // Use the static constructor BY to create a By object and specify the key attribute
of the target component.
By.id
id(id:number):By;
Specifies the ID property of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
id | number | Yes | Component ID. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.id(123) // Use the static constructor BY to create a By object and specify the ID attribute
of the target component.
By.type
type(tp:string):By;
Specifies the type property of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
tp | string | Yes | Component type. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.type('button') // Use the static constructor BY to create a By object and specify the type attribute
of the target component.
By.clickable
clickable(b?:bool):By;
Specifies the clickable attribute of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
b | bool | No | Clickable status of the target component. The default value is true. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.clickable(true) // Use the static constructor BY to create a By object and specify the clickable attribute
of the target component.
By.scrollable
scrollable(b?:bool):By;
Specifies the scrollable attribute of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
b | bool | No | Scrollable status of the target component. The default value is true. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.scrollable(true) // Use the static constructor BY to create a By object and specify the scrollable attribute
of the target component.
By.enabled
enabled(b?:bool):By;
Specifies the enable attribute of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
b | bool | No | Enable status of the target component. The default value is true. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.enabled(true) // Use the static constructor BY to create a By object and specify the enable attribute
of the target component.
By.focused
focused(b?:bool):By;
Specifies the focused attribute of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
b | bool | No | Focused status of the target component. The default value is true. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.enabled(true) // Use the static constructor BY to create a By object and specify the focused attribute
of the target component.
By.selected
selected(b?:bool):By;
Specifies the selected attribute of the target component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
b | bool | No | Selected status of the target component. The default value is true. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.selected(true) // Use the static constructor BY to create a By object and specify the selected attribute
of the target component.
By.isBefore
isBefore(by:By):By;
Specifies the attributes of the component before which the target component is located.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
by | By | Yes | Attributes of the component before which the target component is located. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.isBefore(BY.text('123')) // Use the static constructor BY to create a By object and specify the attributes
of the component before which the target component is located.
By.isAfter
isAfter(by:By):By;
Specifies the attributes of the component after which the target component is located.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
by | By | Yes | Attributes of the component before which the target component is located. |
Return value
Type | Description |
---|---|
By | Returns the By object itself. |
Example
let by = BY.isAfter(BY.text('123')) // Use the static constructor BY to create a By object and specify the attributes
of the component after which the target component is located.
UiComponent
In UiTest, the UiComponent class represents a component on the UI and provides APIs for obtaining component attributes, clicking a component, scrolling to search for a component, and text injection. All APIs provided by this class use a promise to return the result and must be invoked using await.
UiComponent.click
click():Promise
Clicks this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
await button.click()
}
UiComponent.doubleClick
doubleClick():Promise
Double-clicks this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
await buttont.doubleClick()
}
UiComponent.longClick
longClick():Promise
Long-clicks this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
await button.longClick()
}
UiComponent.getId
getId():Promise
Obtains the ID of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the component ID. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
let num = await button.getId()
}
UiComponent.getKey
getKey():Promise
Obtains the key of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the component key. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
let str_key = await button.getKey()
}
UiComponent.getText
getText():Promise
Obtains the text information of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the text information of the component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
let text = await button.getText()
}
UiComponent.getType
getType():Promise
Obtains the type of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the component type. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
let type = await button.getType()
}
UiComponent.isClickable
isClickable():Promise
Obtains the clickable status of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the clickable status of the component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
if(await button.isClickable()) {
console.info('This button can be Clicked')
}
else{
console.info('This button can not be Clicked')
}
}
UiComponent.isScrollable
isScrollable():Promise
Obtains the scrollable status of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the scrollable status of the component. |
Example
async function demo() {
let driver = UiDriver.create()
let scrollBar = await driver.findComponent(BY.scrollable(true))
if(await scrollBar.isScrollable()) {
console.info('This scrollBar can be operated')
}
else{
console.info('This scrollBar can not be operated')
}
}
UiComponent.isEnabled
isEnabled():Promise
Obtains the enable status of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the enable status of the component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
if(await button.isEnabled()) {
console.info('This button can be operated')
}
else{
console.info('This button can not be operated')
}
}
UiComponent.isFocused
isFocused():Promise
Obtains the focused status of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the focused status of the component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
if(await button.isFocused()) {
console.info('This button is focused')
}
else{
console.info('This button is not focused')
}
}
UiComponent.isSelected
isSelected():Promise
Obtains the selected status of this component.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
Promise |
Promise used to return the selected status of the component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
if(await button.isSelected()) {
console.info('This button is selected')
}
else{
console.info('This button is not selected')
}
}
UiComponent.inputText
inputText(text: string):Promise
Enters text into this component (available for text boxes).
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
text | string | Yes | Text to be entered to the component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.type('button'))
await button.inputText('next page')
}
UiComponent.scrollSearch
scrollSearch(by:By):Promise
Scrolls on this component to search for the target component (available for lists).
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
by | By | Yes | Attributes of the target component. |
Return value
Type | Description |
---|---|
Promise |
Promise used to return the target component. |
Example
async function demo() {
let driver = UiDriver.create()
let scrollBar = await driver.findComponent(BY.scrollable(true))
let button = await scrollBar.scrollSearch(BY.text('next page'))
}
UiDriver
The UiDriver class is the main entry to the uitest test framework. It provides APIs for features such as component matching/search, key injection, coordinate clicking/sliding, and screenshot. All APIs provided by this class, except for UiDriver.create(), use a promise to return the result and must be invoked using await.
UiDriver.create
static create():UiDriver;
Creates a UiDriver object and returns the object created. This API is a static API.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Return value
Type | Description |
---|---|
UiDrive | Returns the UiDriver object created. |
Example
async function demo() {
let driver = UiDriver.create()
}
UiDriver.delayMs
delayMs(duration:number):Promise
Delays this UiDriver object within the specified duration.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
duration | number | Yes | Duration of time. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.delayMs(1000)
}
UiDriver.findComponent
findComponent(by:By):Promise
Searches this UiDriver object for the target component that has the given attributes.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
by | By | Yes | Attributes of the target component. |
Return value
Type | Description |
---|---|
Promise |
Promise used to return the found component. |
Example
async function demo() {
let driver = UiDriver.create()
let button = await driver.findComponent(BY.text('next page'))
}
UiDriver.findComponents
findComponents(by:By):Promise<Array
Searches this UiDriver object for all components that match the given attributes.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
by | By | Yes | Attributes of the target component. |
Return value
Type | Description |
---|---|
Promise<Array |
Promise used to return a list of found components. |
Example
async function demo() {
let driver = UiDriver.create()
let buttonList = await driver.findComponents(BY.text('next page'))
}
UiDriver.assertComponentExist
assertComponentExist(by:By):Promise
Asserts that a component that matches the given attributes exists on the current page. If the component does not exist, the API throws a JS exception, causing the current test case to fail.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
by | By | Yes | Attributes of the target component. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.assertComponentExist(BY.text('next page'))
}
UiDriver.pressBack
pressBack():Promise
Presses the Back button on this UiDriver object.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Example
async function demo() {
let driver = UiDriver.create()
await driver.pressBack()
}
UiDriver.triggerKey
triggerKey(keyCode:number):Promise
Triggers the key of this UiDriver object that matches the given key code.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyCode | number | Yes | Key code. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.triggerKey(123)
}
UiDriver.click
click(x:number,y:number):Promise
Clicks a specific point of this UiDriver object based on the given coordinates.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
x,y | number,number | Yes | Coordinate information of a specific point in the (number,number) format. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.click(100,100)
}
UiDriver.doubleClick
doubleClick(x:number,y:number):Promise
Double-clicks a specific point of this UiDriver object based on the given coordinates.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
x,y | number,number | Yes | Coordinate information of a specific point in the (number,number) format. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.doubleClick(100,100)
}
UiDriver.longClick
longClick(x:number,y:number):Promise
Long-clicks a specific point of this UiDriver object based on the given coordinates.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
x,y | number,number | Yes | Coordinate information of a specific point in the (number,number) format. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.longClick(100,100)
}
UiDriver.swipe
swipe(startx:number,starty:number,endx:number,endy:number):Promise
Swipes from the start point to the end point of this UiDriver object based on the given coordinates.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
startx,starty | number,number | Yes | Coordinate information of the start point in the (number,number) format. |
endx,endy | number,number | Yes | Coordinate information of the end point in the (number,number) format. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.swipe(100,100,200,200)
}
UiDriver.screenCap
screenCap(savePath:string):Promise
Captures the current screen of this UiDriver object and saves it as a PNG image to the given save path.
Required permissions: none
System capability: SystemCapability.Test.UiTest
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
savePath | string | Yes | File save path. |
Example
async function demo() {
let driver = UiDriver.create()
await driver.screenCap('/local/tmp/')
}