diff --git a/en/application-dev/reference/apis/js-apis-uitest.md b/en/application-dev/reference/apis/js-apis-uitest.md index 6586d6f0a2c7fc5641a5b49411f67390859e3bfe..d4b84b0d938725bb069cc482b29ce94c9c3c3bd4 100644 --- a/en/application-dev/reference/apis/js-apis-uitest.md +++ b/en/application-dev/reference/apis/js-apis-uitest.md @@ -1,82 +1,161 @@ -# UiTest +# @ohos.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. +The **UiTest** module provides APIs that you can use to simulate UI actions during testing, such as clicks, double-clicks, long-clicks, and swipes. + +This module provides the following functions: + +- [On9+](#on9): provides UI component feature description APIs for component filtering and matching. +- [Component9+](#component9): 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. +- [Driver9+](#driver9): works as the entry class and provides APIs for features such as component matching/search, key injection, coordinate clicking/sliding, and screenshot. +- [UiWindow9+](#uiwindow9): works as the entry class and provides APIs for obtaining window attributes, dragging windows, and adjusting window sizes. +- [By(deprecated)](#bydeprecated): provides UI component feature description APIs for component filtering and matching. This API is deprecated since API version 9. You are advised to use [On9+](#on9) instead. +- [UiComponent(deprecated)](#uicomponentdeprecated): 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. This API is deprecated since API version 9. You are advised to use [Component9+](#component9) instead. +- [UiDriver(deprecated)](#uidriverdeprecated): works as the entry class and provides APIs for features such as component matching/search, key injection, coordinate clicking/sliding, and screenshot. This API is deprecated since API version 9. You are advised to use [Driver9+](#driver9) instead. + +>**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' +```js +import {UiComponent, UiDriver, Component, Driver, UiWindow, ON, BY, MatchPattern, DisplayRotation, ResizeDirection, WindowMode, PointerMatrix} from '@ohos.uitest'; ``` -## By +## MatchPattern -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:
1. Allow one or more attributes as the match conditions. For example, you can specify both the **text** and **id** attributes to find the target component.
2. Provide multiple match patterns for component attributes.
3. Support absolute positioning and relative positioning for components. APIs such as [By.isBefore](#byisbefore) and [By.isAfter](#byisafter) 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. +Enumerates the match patterns supported for component attributes. -```js -BY.text('123').type('button') -``` +**System capability**: SystemCapability.Test.UiTest -### By.text +| Name | Value | Description | +| ----------- | ---- | -------------- | +| EQUALS | 0 | Equal to the given value. | +| CONTAINS | 1 | Contains the given value. | +| STARTS_WITH | 2 | Starts with the given value.| +| ENDS_WITH | 3 | Ends with the given value.| -text(txt: string, pattern?: MatchPattern): By +## ResizeDirection9+ -Specifies the text attribute of the target component. Multiple match patterns are supported. +Enumerates the directions in which a window can be resized. **System capability**: SystemCapability.Test.UiTest -**Parameters** +| Name | Value | Description | +| ---------- | ---- | -------- | +| LEFT | 0 | Left. | +| RIGHT | 1 | Right. | +| UP | 2 | Up. | +| DOWN | 3 | Down. | +| LEFT_UP | 4 | Upper left.| +| LEFT_DOWN | 5 | Lower left.| +| RIGHT_UP | 6 | Upper right.| +| RIGHT_DOWN | 7 | Lower right.| -| 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](#matchpattern).| +## Point9+ -**Return value** +Provides the coordinates of a point. -| Type| Description | -| ---- | -------------- | -| By | Returns the **By** object itself.| +**System capability**: SystemCapability.Test.UiTest -**Example** +| Name| Type | Readable| Writable| Description | +| ---- | ------ | ---- | ---- | ---------------- | +| X | number | Yes | No | X-coordinate of a point.| +| Y | number | Yes | No | Y-coordinate of a point.| + +## Rect9+ + +Provides bounds information of a component. + +**System capability**: SystemCapability.Test.UiTest + +| Name | Type | Readable| Writable| Description | +| ------- | ------ | ---- | ---- | ------------------------- | +| leftX | number | Yes | No | X-coordinate of the upper left corner of the component bounds.| +| topY | number | Yes | No | Y-coordinate of the upper left corner of the component bounds.| +| rightX | number | Yes | No | X-coordinate of the lower right corner of the component bounds.| +| bottomY | number | Yes | No | Y-coordinate of the lower right corner of the component bounds.| + +## WindowMode9+ + +**System capability**: SystemCapability.Test.UiTest + +Enumerates the window modes. + +| Name | Value | Description | +| ---------- | ---- | ---------- | +| FULLSCREEN | 0 | Full-screen mode.| +| PRIMARY | 1 | Primary window mode. | +| SECONDARY | 2 | Secondary window mode.| +| FLOATING | 3 | Floating window mode.| + +## DisplayRotation9+ + +**System capability**: SystemCapability.Test.UiTest + +Describes the display rotation of the device. + +| Name | Value | Description | +| ------------ | ---- | ---------------------------------------- | +| ROTATION_0 | 0 | The device display is not rotated and is in its original vertical orientation. | +| ROTATION_90 | 1 | The device display rotates 90° clockwise and is in landscape orientation. | +| ROTATION_180 | 2 | The device display rotates 180° clockwise and is in reverse vertical orientation.| +| ROTATION_270 | 3 | The device display rotates 270° clockwise and is in reverse landscape orientation.| + +## WindowFilter9+ + +Provides the flag attributes of this window. + +**System capability**: SystemCapability.Test.UiTest + +| Name | Type | Readable| Writable| Description | +| ---------- | ------- | ---- | ---- | -------------------------- | +| bundleName | string | Yes | No | Bundle name of the application to which the window belongs. | +| title | string | Yes | No | Title of the window. | +| focused | boolean | Yes | No | Whether the window is in focused state. | +| actived | boolean | Yes | No | Whether the window is interacting with the user.| + +## On9+ + +Since API version 9, the UiTest framework provides a wide range of UI component feature description APIs in the **On** class to filter and match components. +The API capabilities provided by the **On** class exhibit the following features: 1. Allow one or more attributes as the match conditions. For example, you can specify both the **text** and **id** attributes to find the target component.
2. Provide multiple match patterns for component attributes.
3. Support absolute positioning and relative positioning for components. APIs such as [ON.isBefore](#isbefore) and [ON.isAfter](#isafter) can be used to specify the features of adjacent components to assist positioning.
All APIs provided in the **On** class are synchronous. You are advised to use the static constructor **ON** to create an **On** object in chain mode. ```js -let by = BY.text('123') // Use the static constructor BY to create a By object and specify the text attribute of the target component. +ON.text('123').type('button'); ``` +### text9+ -### By.key - -key(key: string): By +text(txt: string, pattern?: MatchPattern): On -Specifies the key attribute of the target component. +Specifies the text attribute of the target component. Multiple match patterns are supported. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ------ | ---- | ----------------- | -| key | string | Yes | Component key.| +| Name | Type | Mandatory| Description | +| ------- | ----------------------------- | ---- | --------------------------------------------------- | +| txt | string | Yes | Component text, used to match the target component. | +| pattern | [MatchPattern](#matchpattern) | No | Match pattern. The default value is [EQUALS](#matchpattern).| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------- | +| [On](#on9) | **On** object that matches the text attribute of the target component.| **Example** ```js -let by = BY.key('123') // Use the static constructor BY to create a By object and specify the key attribute of the target component. +let on = ON.text('123'); // Use the static constructor ON to create an On object and specify the text attribute of the target component. ``` -### By.id +### id9+ -id(id: number): By +id(id: string): On Specifies the ID attribute of the target component. @@ -86,24 +165,24 @@ Specifies the ID attribute of the target component. | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ---------------- | -| id | number | Yes | Component ID.| +| id | string | Yes | Component ID.| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | -------------------------------- | +| [On](#on9) | **On** object that matches the ID attribute of the target component.| **Example** ```js -let by = BY.id(123) // Use the static constructor BY to create a By object and specify the id attribute of the target component. +let on = ON.id('123'); // Use the static constructor ON to create an On object and specify the ID attribute of the target component. ``` -### By.type +### type9+ -type(tp: string): By +type(tp: string): On Specifies the type attribute of the target component. @@ -117,46 +196,46 @@ Specifies the type attribute of the target component. **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------------- | +| [On](#on9) | **On** object that matches the type attribute of the target component.| **Example** ```js -let by = BY.type('button') // Use the static constructor BY to create a By object and specify the type attribute of the target component. +let on = ON.type('button'); // Use the static constructor ON to create an On object and specify the type attribute of the target component. ``` -### By.clickable +### clickable9+ -clickable(b?: bool): By +clickable(b?: boolean): On -Specifies the clickable attribute of the target component. +Specifies the clickable status attribute of the target component. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------------------- | -| b | bool | No | Clickable status of the target component. The default value is **true**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Clickable status of the target component.
**true**: clickable.
**false**: not clickable.
Default value: **true**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ------------------------------------------ | +| [On](#on9) | **On** object that matches the clickable status attribute of the target component.| **Example** ```js -let by = BY.clickable(true) // Use the static constructor BY to create a By object and specify the clickable status attribute of the target component. +let on = ON.clickable(true); // Use the static constructor ON to create an On object and specify the clickable status attribute of the target component. ``` -### By.longClickable9+ +### longClickable9+ -longClickable(b?: bool): By +longClickable(b?: boolean): On Specifies the long-clickable status attribute of the target component. @@ -164,26 +243,26 @@ Specifies the long-clickable status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | ------------------------------------ | -| b | bool | No | Long-clickable status of the target component. The default value is **true**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Long-clickable status of the target component.
**true**: long-clickable.
**false**: not long-clickable.
Default value: **true**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------------------- | +| [On](#on9) | **On** object that matches the long-clickable status attribute of the target component.| **Example** ```js -let by = BY.longClickable(true) // Use the static constructor BY to create a By object and specify the long-clickable status attribute of the target component. +let on = ON.longClickable(true); // Use the static constructor ON to create an On object and specify the long-clickable status attribute of the target component. ``` -### By.scrollable +### scrollable9+ -scrollable(b?: bool): By +scrollable(b?: boolean): On Specifies the scrollable status attribute of the target component. @@ -191,25 +270,25 @@ Specifies the scrollable status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | ---------------------------- | -| b | bool | No | Scrollable status of the target component. The default value is **true**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ----------------------------------------------------------- | +| b | boolean | No | Scrollable status of the target component.
**true**: scrollable.
**false**: not scrollable.
Default value: **true**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ------------------------------------------ | +| [On](#on9) | **On** object that matches the scrollable status attribute of the target component.| **Example** ```js -let by = BY.scrollable(true) // Use the static constructor BY to create a By object and specify the scrollable status attribute of the target component. +let on = ON.scrollable(true); // Use the static constructor ON to create an On object and specify the scrollable status attribute of the target component. ``` -### By.enabled +### enabled9+ -enabled(b?: bool): By +enabled(b?: boolean): On Specifies the enabled status attribute of the target component. @@ -217,25 +296,25 @@ Specifies the enabled status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | ------------------------------ | -| b | bool | No | Enabled status of the target component. The default value is **true**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | --------------------------------------------------------- | +| b | boolean | No | Enabled status of the target component.
**true**: enabled.
**false**: disabled.
Default value: **true**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------------- | +| [On](#on9) | **On** object that matches the enabled status attribute of the target component.| **Example** ```js -let by = BY.enabled(true) // Use the static constructor BY to create a By object and specify the enabled status attribute of the target component. +let on = ON.enabled(true); // Use the static constructor ON to create an On object and specify the enabled status attribute of the target component. ``` -### By.focused +### focused9+ -focused(b?: bool): By +focused(b?: boolean): On Specifies the focused status attribute of the target component. @@ -243,25 +322,25 @@ Specifies the focused status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------------- | -| b | bool | No | Focused status of the target component. The default value is **true**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ----------------------------------------------------- | +| b | boolean | No | Focused status of the target component.
**true**: focused.
**false**: not focused.
Default value: **true**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------------- | +| [On](#on9) | **On** object that matches the focused status attribute of the target component.| **Example** ```js -let by = BY.focused(true) // Use the static constructor BY to create a By object and specify the focused status attribute of the target component. +let on = ON.focused(true); // Use the static constructor ON to create an On object and specify the focused status attribute of the target component. ``` -### By.selected +### selected9+ -selected(b?: bool): By +selected(b?: boolean): On Specifies the selected status attribute of the target component. @@ -269,25 +348,25 @@ Specifies the selected status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------------------- | -| b | bool | No | Selected status of the target component. The default value is **true**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Selected status of the target component.
**true**: selected.
**false**: not selected.
Default value: **true**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ------------------------------------------ | +| [On](#on9) | **On** object that matches the selected status attribute of the target component.| **Example** ```js -let by = BY.selected(true) // Use the static constructor BY to create a By object and specify the selected status attribute of the target component. +let on = ON.selected(true); // Use the static constructor ON to create an On object and specify the selected status attribute of the target component. ``` -### By.checked9+ +### checked9+ -checked(b?: bool): By +checked(b?: boolean): On Specifies the checked status attribute of the target component. @@ -295,25 +374,25 @@ Specifies the checked status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | --------------------------------- | -| b | bool | No | Checked status of the target component. The default value is **false**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Checked status of the target component.
**true**: checked.
**false**: not checked.
Default value: **false**| **Return value** -| Type| Description | -| ---- | -------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ------------------------------------------ | +| [On](#on9) | **On** object that matches the checked status attribute of the target component.| **Example** ```js -let by = BY.checked(true) // Use the static constructor BY to create a By object and specify the checked status attribute of the target component. +let on = ON.checked(true); // Use the static constructor ON to create an On object and specify the checked status attribute of the target component. ``` -### By.checkable9+ +### checkable9+ -checkable(b?: bool): By +checkable(b?: boolean): On Specifies the checkable status attribute of the target component. @@ -321,25 +400,25 @@ Specifies the checkable status attribute of the target component. **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | ------------------------------------- | -| b | bool | No | Checkable status of the target component. The default value is **false**.| +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Checkable status of the target component.
**true**: checkable.
**false**: not checkable.
Default value: **false**| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | -------------------------------------------- | +| [On](#on9) | **On** object that matches the checkable status attribute of the target component.| **Example** ```js -let by = BY.checkable(true) // Use the static constructor BY to create a By object and specify the checkable status attribute of the target component. +let on = ON.checkable(true); // Use the static constructor ON to create an On object and specify the checkable status attribute of the target component. ``` -### By.isBefore +### isBefore9+ -isBefore(by: By): By +isBefore(on: On): On Specifies the attributes of the component before which the target component is located. @@ -347,25 +426,25 @@ Specifies the attributes of the component before which the target component is l **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | ---------------- | -| by | By | Yes | Attributes of the component before which the target component is located.| +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------- | +| on | [On](#on9) | Yes | Attributes of the component before which the target component is located.| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------------------------- | +| [On](#on9) | **On** object.| **Example** ```js -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. +let on = ON.isBefore(ON.text('123')); // Use the static constructor ON to create an On object and specify the attributes of the component before which the target component is located. ``` -### By.isAfter +### isAfter9+ -isAfter(by: By): By +isAfter(on: On): On Specifies the attributes of the component after which the target component is located. @@ -373,41 +452,28 @@ Specifies the attributes of the component after which the target component is lo **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | ---------------- | -| by | By | Yes | Attributes of the component before which the target component is located.| +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------- | +| on | [On](#on9) | Yes | Attributes of the component after which the target component is located.| **Return value** -| Type| Description | -| ---- | ---------------- | -| By | Returns the **By** object itself.| +| Type | Description | +| ---------- | ---------------------------------------------------- | +| [On](#on9) | **On** object.| **Example** ```js -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. +let on = ON.isAfter(ON.text('123')); // Use the static constructor ON to create an On object and specify the attributes of the component after which the target component is located. ``` -## UiComponent +## Component9+ -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. +In **UiTest** of API version 9, the **Component** 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 in this class use a promise to return the result and must be invoked using **await**. -### Rect9+ - -Provides border information of a component. - -**System capability**: SystemCapability.Test.UiTest - -| Name | Type| Readable| Writable| Description | -| ------- | -------- | ---- | ---- | ------------------------- | -| leftX | number | Yes | No | X coordinate of the upper left corner of the component borders.| -| topY | number | Yes | No | Y coordinate of the upper left corner of the component borders.| -| rightX | number | Yes | No | X coordinate of the lower right corner of the component borders.| -| bottomY | number | Yes | No | Y coordinate of the lower right corner of the component borders.| - -### UiComponent.click +### click9+ click(): Promise\ @@ -415,17 +481,26 @@ Clicks this component. **System capability**: SystemCapability.Test.UiTest +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - await button.click() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + await button.click(); } ``` -### UiComponent.doubleClick +### doubleClick9+ doubleClick(): Promise\ @@ -433,17 +508,26 @@ Double-clicks this component. **System capability**: SystemCapability.Test.UiTest +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - await button.doubleClick() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + await button.doubleClick(); } ``` -### UiComponent.longClick +### longClick9+ longClick(): Promise\ @@ -451,19 +535,28 @@ Long-clicks this component. **System capability**: SystemCapability.Test.UiTest +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - await button.longClick() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + await button.longClick(); } ``` -### UiComponent.getId +### getId9+ -getId(): Promise\ +getId(): Promise\ Obtains the ID of this component. @@ -473,43 +566,28 @@ Obtains the ID of this component. | Type | Description | | ---------------- | ------------------------------- | -| Promise\ | Promise used to return the ID of the component.| - -**Example** - -```js -async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - let num = await button.getId() -} -``` - -### UiComponent.getKey +| Promise\ | Promise used to return the ID of the component.| -getKey(): Promise\ - -Obtains the key of this component. - -**System capability**: SystemCapability.Test.UiTest +**Error codes** -**Return value** +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). -| Type | Description | -| ---------------- | ------------------------------ | -| Promise\ | Promise used to return the key of the component.| +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - let str_key = await button.getKey() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + let num = await button.getId(); } ``` -### UiComponent.getText +### getText9+ getText(): Promise\ @@ -523,17 +601,26 @@ Obtains the text information of this component. | ---------------- | --------------------------------- | | Promise\ | Promise used to return the text information of the component.| +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - let text = await button.getText() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + let text = await button.getText(); } ``` -### UiComponent.getType +### getType9+ getType(): Promise\ @@ -547,17 +634,26 @@ Obtains the type of this component. | ---------------- | ----------------------------- | | Promise\ | Promise used to return the type of the component.| +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - let type = await button.getType() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + let type = await button.getType(); } ``` -### UiComponent.getBounds9+ +### getBounds9+ getBounds(): Promise\ @@ -567,23 +663,65 @@ Obtains the bounds of this component. **Return value** -| Type | Description | -| -------------- | ------------------------------------- | -| Promise\ | Promise used to return the bounds of the component.| +| Type | Description | +| ------------------------ | ------------------------------------- | +| Promise\<[Rect](#rect9)> | Promise used to return the bounds of the component.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + let rect = await button.getBounds(); +} +``` + +### getBoundsCenter9+ + +getBoundsCenter(): Promise\ + +Obtains the information about the center of the bounding box around this component. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| -------------------------- | ----------------------------------------------- | +| Promise\<[Point](#point9)> | Promise used to return the information about the center of the bounding box around the component.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - let rect = await button.getBounds() + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + let point = await button.getBoundsCenter(); } ``` -### UiComponent.isClickable +### isClickable9+ -isClickable(): Promise\ +isClickable(): Promise\ Obtains the clickable status of this component. @@ -591,57 +729,73 @@ Obtains the clickable status of this component. **Return value** -| Type | Description | -| -------------- | ------------------------------------- | -| Promise\ | Promise used to return the clickable status of the component.| +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the component is clickable, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); if(await button.isClickable()) { - console.info('This button can be Clicked') - } - else{ - console.info('This button can not be Clicked') + console.info('This button can be Clicked'); + } else { + console.info('This button can not be Clicked'); } } ``` -### UiComponent.isLongClickable9+ +### isLongClickable9+ -isLongClickable(): Promise\ +isLongClickable(): Promise\ -Obtains the long clickable status of this component. +Obtains the long-clickable status of this component. **System capability**: SystemCapability.Test.UiTest **Return value** -| Type | Description | -| -------------- | ------------------------------------------- | -| Promise\ | Promise used to return the long clickable status of the component.| +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the long-clickable status of the component. The value **true** means that the component is long-clickable, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); if(await button.isLongClickable()) { - console.info('This button can longClick') - } - else{ - console.info('This button can not longClick') + console.info('This button can longClick'); + } else { + console.info('This button can not longClick'); } } ``` -### UiComponent.isChecked9+ +### isChecked9+ -isChecked(): Promise\ +isChecked(): Promise\ Obtains the checked status of this component. @@ -649,57 +803,73 @@ Obtains the checked status of this component. **Return value** -| Type | Description | -| -------------- | ------------------------------------- | -| Promise\ | Promise used to return the checked status of the component.| +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the checked status of the component. The value **true** means that the component is checked, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let checkBox = await driver.findComponent(BY.type('Checkbox')) + let driver = Driver.create(); + let checkBox = await driver.findComponent(ON.type('Checkbox')); if(await checkBox.isChecked) { - console.info('This checkBox is checked') - } - else{ - console.info('This checkBox is not checked') + console.info('This checkBox is checked'); + } else { + console.info('This checkBox is not checked'); } } ``` -### UiComponent.isCheckable9+ +### isCheckable9+ -isCheckable(): Promise\ +isCheckable(): Promise\ -Obtains the checked status of this component. +Obtains the checkable status of this component. **System capability**: SystemCapability.Test.UiTest **Return value** -| Type | Description | -| -------------- | ------------------------------------------- | -| Promise\ | Promise used to return the checked status of the component.| +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the checkable status of the component. The value **true** means that the component is checkable, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let checkBox = await driver.findComponent(BY.type('Checkbox')) + let driver = Driver.create(); + let checkBox = await driver.findComponent(ON.type('Checkbox')); if(await checkBox.isCheckable) { - console.info('This checkBox is checkable') - } - else{ - console.info('This checkBox is not checkable') + console.info('This checkBox is checkable'); + } else { + console.info('This checkBox is not checkable'); } } ``` -### UiComponent.isScrollable +### isScrollable9+ -isScrollable(): Promise\ +isScrollable(): Promise\ Obtains the scrollable status of this component. @@ -707,29 +877,37 @@ Obtains the scrollable status of this component. **Return value** -| Type | Description | -| -------------- | ------------------------------------- | -| Promise\ | Promise used to return the scrollable status of the component.| +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the component is scrollable, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let scrollBar = await driver.findComponent(BY.scrollable(true)) + let driver = Driver.create(); + let scrollBar = await driver.findComponent(ON.scrollable(true)); if(await scrollBar.isScrollable()) { - console.info('This scrollBar can be operated') - } - else{ - console.info('This scrollBar can not be operated') + console.info('This scrollBar can be operated'); + } else { + console.info('This scrollBar can not be operated'); } } ``` -### UiComponent.isEnabled +### isEnabled9+ -isEnabled(): Promise\ +isEnabled(): Promise\ Obtains the enabled status of this component. @@ -737,29 +915,37 @@ Obtains the enabled status of this component. **Return value** -| Type | Description | -| -------------- | ------------------------------- | -| Promise\ | Promise used to return the enabled status of the component.| +| Type | Description | +| ----------------- | ---------------------------------------------------------- | +| Promise\ | Promise used to return the result. The value **true** means that the component is enabled, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); if(await button.isEnabled()) { - console.info('This button can be operated') - } - else{ - console.info('This button can not be operated') + console.info('This button can be operated'); + } else { + console.info('This button can not be operated'); } } ``` -### UiComponent.isFocused +### isFocused9+ -isFocused(): Promise\ +isFocused(): Promise\ Obtains the focused status of this component. @@ -767,28 +953,36 @@ Obtains the focused status of this component. **Return value** -| Type | Description | -| -------------- | ----------------------------------- | -| Promise\ | Promise used to return the focused status of the component.| +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the focused status of the component. The value **true** means that the component is focused, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); if(await button.isFocused()) { - console.info('This button is focused') - } - else{ - console.info('This button is not focused') + console.info('This button is focused'); + } else { + console.info('This button is not focused'); } } ``` -### UiComponent.isSelected +### isSelected9+ -isSelected(): Promise\ +isSelected(): Promise\ Obtains the selected status of this component. @@ -796,26 +990,34 @@ Obtains the selected status of this component. **Return value** -| Type | Description | -| -------------- | -------------------- | -| Promise\ | Promise used to return the selected status of the component.| +| Type | Description | +| ----------------- | --------------------------------------------------- | +| Promise\ | Promise used to return the result. The value **true** means that the component is selected, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); if(await button.isSelected()) { - console.info('This button is selected') - } - else{ - console.info('This button is not selected') + console.info('This button is selected'); + } else { + console.info('This button is not selected'); } } ``` -### UiComponent.inputText +### inputText9+ inputText(text: string): Promise\ @@ -825,107 +1027,162 @@ Enters text into this component (available for text boxes). **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ------ | ---- | ---------------- | -| text | string | Yes | Text to enter.| +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ---------------------------------------- | +| text | string | Yes | Text to enter, which can contain English and special characters.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let text = await driver.findComponent(BY.text('hello world')) - await text.inputText('123') + let driver = Driver.create(); + let text = await driver.findComponent(ON.text('hello world')); + await text.inputText('123'); } ``` -### UiComponent.clearText9+ +### clearText9+ clearText(): Promise\ -Clears text in this component (available for text boxes). +Clears text in this component. This API is applicable to text boxes. **System capability**: SystemCapability.Test.UiTest +**Error codes** + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let text = await driver.findComponent(BY.text('hello world')) - await text.clearText() + let driver = Driver.create(); + let text = await driver.findComponent(ON.text('hello world')); + await text.clearText(); } ``` -### UiComponent.scrollSearch +### scrollSearch9+ -scrollSearch(by: By): Promise\ +scrollSearch(on: On): Promise\ -Scrolls on this component to search for the target component (applicable to component that support scrolling, such as **\**). +Scrolls on this component to search for the target component. This API is applicable to components that support scrolling. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------- | -| by | By | Yes | Attributes of the target component.| +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------- | +| on | [On](#on9) | Yes | Attributes of the target component.| **Return value** -| Type | Description | -| --------------------- | ------------------------------------- | -| Promise\ | Promise used to return the target component.| +| Type | Description | +| ---------------------------------- | ------------------------------------- | +| Promise\<[Component](#component9)> | Promise used to return the target component.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let scrollBar = await driver.findComponent(BY.type('Scroll')) - let button = await scrollBar.scrollSearch(BY.text('next page')) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('Scroll')); + let button = await scrollBar.scrollSearch(ON.text('next page')); } ``` -### UiComponent.scrollToTop9+ +### scrollToTop9+ -scrollToTop(): Promise\ +scrollToTop(speed?: number): Promise\ -Scrolls to the top of this a component (applicable to component that support scrolling, such as **\**). +Scrolls to the top of this component. This API is applicable to components that support scrolling. **System capability**: SystemCapability.Test.UiTest +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| speed | number | No | Scroll speed, in pixel/s. The value ranges from 200 to 15000. If the set value is not in the range, the default value 600 is used.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let scrollBar = await driver.findComponent(BY.type('Scroll')) - await scrollBar.scrollToTop() + let driver = Driver.create(); + let scrollBar = await driver.findComponent(ON.type('Scroll')); + await scrollBar.scrollToTop(); } ``` -### UiComponent.scrollToBottom9+ +### scrollToBottom9+ -scrollToBottom(): Promise\ +scrollToBottom(speed?: number): Promise\ -Scrolls to the bottom of this a component (applicable to component that support scrolling, such as **\**). +Scrolls to the bottom of this component. This API is applicable to components that support scrolling. **System capability**: SystemCapability.Test.UiTest +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| speed | number | No | Scroll speed, in pixel/s. The value ranges from 200 to 15000. If the set value is not in the range, the default value 600 is used.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + **Example** ```js async function demo() { - let driver = UiDriver.create() - let scrollBar = await driver.findComponent(BY.type('Scroll')) - await scrollBar.scrollToBottom() + let driver = Driver.create(); + let scrollBar = await driver.findComponent(ON.type('Scroll')); + await scrollBar.scrollToBottom(); } ``` -### UiComponent.dragTo9+ +### dragTo9+ -dragTo(target: UiComponent): Promise\ +dragTo(target: Component): Promise\ Drags this component to the target component. @@ -933,275 +1190,438 @@ Drags this component to the target component. **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ----------- | ---- | ---------- | -| target | UiComponent | Yes | Target component.| +| Name| Type | Mandatory| Description | +| ------ | ------------------------ | ---- | ---------- | +| target | [Component](#component9) | Yes | Target component.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.type('button')) - let text = await driver.findComponent(BY.text('hello world')) - await button.dragTo(text) + let driver = Driver.create(); + let button = await driver.findComponent(ON.type('button')); + let text = await driver.findComponent(ON.text('hello world')); + await button.dragTo(text); } ``` -## UiDriver +### pinchOut9+ -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**. +pinchOut(scale: number): Promise\ -### UiDriver.create +Pinches a component to scale it up to the specified ratio. -static create(): UiDriver +**System capability**: SystemCapability.Test.UiTest -Creates a **UiDriver** object and returns the object created. This API is a static API. +**Parameters** -**System capability**: SystemCapability.Test.UiTest +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ---------------- | +| scale | number | Yes | Scale factor.| -**Return value** +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). -| Type | Description | -| ------- | ------------------------ | -| UiDrive | Returns the **UiDriver** object created.| +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() -} + let driver = Driver.create(); + let image = await driver.findComponent(ON.type('image')); + await image.pinchOut(1.5); + } ``` -### UiDriver.delayMs +### pinchIn9+ -delayMs(duration: number): Promise\ +pinchIn(scale: number): Promise\ -Delays this **UiDriver** object within the specified duration. +Pinches a component to scale it down to the specified ratio. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name | Type | Mandatory| Description | -| -------- | ------ | ---- | ------------ | -| duration | number | Yes | Duration of time.| +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ---------------- | +| scale | number | Yes | Scale factor.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.delayMs(1000) -} + let driver = Driver.create(); + let image = await driver.findComponent(ON.type('image')); + await image.pinchIn(0.5); + } ``` -### UiDriver.findComponent +## Driver9+ -findComponent(by: By): Promise\ +The **Driver** class is the main entry to the UiTest 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 **Driver.create()**, use a promise to return the result and must be invoked using **await**. -Searches this **UiDriver** object for the target component that matches the given attributes. +### create9+ -**System capability**: SystemCapability.Test.UiTest +static create(): Driver -**Parameters** +Creates a **Driver** object and returns the object created. This API is a static API. -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------- | -| by | By | Yes | Attributes of the target component.| +**System capability**: SystemCapability.Test.UiTest **Return value** -| Type | Description | -| --------------------- | --------------------------------- | -| Promise\ | Promise used to return the found component.| +| Type| Description | +| -------- | ---------------------- | +| Driver | **Driver** object created.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ------------------ | +| 17000001 | Initialize failed. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.findComponent(BY.text('next page')) + let driver = Driver.create(); } ``` -### UiDriver.findComponents +### delayMs9+ -findComponents(by: By): Promise\> +delayMs(duration: number): Promise\ -Searches this **UiDriver** object for all components that match the given attributes. +Delays this **Driver** object within the specified duration. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------- | -| by | By | Yes | Attributes of the target component.| +| Name | Type | Mandatory| Description | +| -------- | ------ | ---- | ---------------------- | +| duration | number | Yes | Duration of time, in ms.| -**Return value** +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). -| Type | Description | -| ----------------------------- | --------------------------------------- | -| Promise\> | Promise used to return a list of found components.| +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let buttonList = await driver.findComponents(BY.text('next page')) + let driver = Driver.create(); + await driver.delayMs(1000); } ``` -### UiDriver.waitForComponent9+ +### findComponent9+ -waitForComponent(by: By, time: number): Promise\ +findComponent(on: On): Promise\ -Searches this **UiDriver** object for the target component that matches the given attributes within the specified duration. +Searches this **Driver** object for the target component that matches the given attributes. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ------ | ---- | -------------------------------- | -| by | By | Yes | Attributes of the target component. | -| time | number | Yes | Duration for searching for the target component, in ms.| +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------- | +| on | [On](#on9) | Yes | Attributes of the target component.| **Return value** -| Type | Description | -| --------------------- | --------------------------------- | -| Promise\ | Promise used to return the found component.| +| Type | Description | +| ---------------------------------- | --------------------------------- | +| Promise\<[Component](#component9)> | Promise used to return the found component.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - let button = await driver.waitForComponent(BY.text('next page'),500) + let driver = Driver.create(); + let button = await driver.findComponent(ON.text('next page')); } ``` -### UiDriver.assertComponentExist +### findComponents9+ -assertComponentExist(by: By): Promise\ +findComponents(on: On): 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. +Searches this **Driver** object for all components that match the given attributes. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type| Mandatory| Description | -| ------ | ---- | ---- | -------------------- | -| by | By | Yes | Attributes of the target component.| - -**Example** +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------- | +| on | [On](#on9) | Yes | Attributes of the target component.| -```js -async function demo() { - let driver = UiDriver.create() - await driver.assertComponentExist(BY.text('next page')) -} -``` +**Return value** -### UiDriver.pressBack +| Type | Description | +| ------------------------------------------ | --------------------------------------- | +| Promise\> | Promise used to return a list of found components.| -pressBack(): Promise\ +**Error codes** -Presses the Back button on this **UiDriver** object. +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). -**System capability**: SystemCapability.Test.UiTest +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.pressBack() + let driver = Driver.create(); + let buttonList = await driver.findComponents(ON.text('next page')); } ``` -### UiDriver.triggerKey +### findWindow9+ -triggerKey(keyCode: number): Promise\ +findWindow(filter: WindowFilter): Promise\ -Triggers the key of this **UiDriver** object that matches the given key code. +Searches for the window that matches the specified attributes. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name | Type | Mandatory| Description | -| ------- | ------ | ---- | ------------- | -| keyCode | number | Yes | Key code.| +| Name| Type | Mandatory| Description | +| ------ | ------------------------------ | ---- | ---------------- | +| filter | [WindowFilter](#windowfilter9) | Yes | Attributes of the target window.| + +**Return value** + +| Type | Description | +| -------------------------------- | ------------------------------------- | +| Promise\<[UiWindow](#uiwindow9)> | Promise used to return the target window.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.triggerKey(123) + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); } ``` -### UiDriver.click +### waitForComponent9+ -click(x: number, y: number): Promise\ +waitForComponent(on: On, time: number): Promise\ -Clicks a specific point of this **UiDriver** object based on the given coordinates. +Searches this **Driver** object for the target component that matches the given attributes within the specified duration. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ------ | ---- | -------------------------------------- | -| x | number | Yes | X coordinate of the target point.| -| y | number | Yes | Y coordinate of the target point.| +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------------------- | +| On | [On](#on9) | Yes | Attributes of the target component. | +| time | number | Yes | Duration for searching for the target component, in ms.| + +**Return value** + +| Type | Description | +| --------------------------------- | --------------------------------- | +| Promise\<[Component](#component)> | Promise used to return the found component.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.click(100,100) + let driver = Driver.create(); + let button = await driver.waitForComponent(ON.text('next page'),500); } ``` -### UiDriver.doubleClick +### assertComponentExist9+ -doubleClick(x: number, y: number): Promise\ +assertComponentExist(on: On): Promise\ -Double-clicks a specific point of this **UiDriver** object based on the given coordinates. +Asserts that a component that matches the given attributes exists on the current page. **System capability**: SystemCapability.Test.UiTest **Parameters** -| Name| Type | Mandatory| Description | -| ------ | ------ | ---- | -------------------------------------- | -| x | number | Yes | X coordinate of the target point.| -| y | number | Yes | Y coordinate of the target point.| +| Name| Type | Mandatory| Description | +| ------ | ---------- | ---- | -------------------- | +| on | [On](#on9) | Yes | Attributes of the target component.| -**Example** +**Error codes** -```js +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000003 | Component existence assertion failed. | + +**Example** + +```js async function demo() { - let driver = UiDriver.create() - await driver.doubleClick(100,100) + let driver = Driver.create(); + await driver.assertComponentExist(ON.text('next page')); } ``` -### UiDriver.longClick +### pressBack9+ -longClick(x: number, y: number): Promise\ +pressBack(): Promise\ -Long-clicks a specific point of this **UiDriver** object based on the given coordinates. +Presses the Back button on this **Driver** object. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.pressBack(); +} +``` + +### triggerKey9+ + +triggerKey(keyCode: number): Promise\ + +Triggers the key of this **Driver** object that matches the given key code. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ------ | ---- | ------------- | +| keyCode | number | Yes | Key code.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.triggerKey(123); +} +``` + +### triggerCombineKeys9+ + +triggerCombineKeys(key0: number, key1: number, key2?: number): Promise\ + +Triggers a key combination based on the specified key values. For example, if the value of **Key** is (2072, 2019), the **Driver** object finds and clicks the key combination that matches the value, for example, **Ctrl+C**. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ------------------- | +| key0 | number | Yes | The first key value.| +| key1 | number | Yes | The second key value.| +| key2 | number | No | The third key value.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.triggerCombineKeys(2072, 2047, 2035); +} +``` + + +### click9+ + +click(x: number, y: number): Promise\ + +Clicks a specific point of this **Driver** object based on the given coordinates. **System capability**: SystemCapability.Test.UiTest @@ -1209,23 +1629,31 @@ Long-clicks a specific point of this **UiDriver** object based on the given coor | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | -| x | number | Yes | X coordinate of the target point.| -| y | number | Yes | Y coordinate of the target point.| +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.longClick(100,100) + let driver = Driver.create(); + await driver.click(100,100); } ``` -### UiDriver.swipe +### doubleClick9+ -swipe(startx: number, starty: number, endx: number, endy: number): Promise\ +doubleClick(x: number, y: number): Promise\ -Swipes on this **UiDriver** object from the start point to the end point based on the given coordinates. +Double-clicks a specific point of this **Driver** object based on the given coordinates. **System capability**: SystemCapability.Test.UiTest @@ -1233,25 +1661,31 @@ Swipes on this **UiDriver** object from the start point to the end point based o | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | -| startx | number | Yes | X coordinate of the start point.| -| starty | number | Yes | Y coordinate of the start point.| -| endx | number | Yes | X coordinate of the end point.| -| endy | number | Yes | Y coordinate of the end point.| +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.swipe(100,100,200,200) + let driver = Driver.create(); + await driver.doubleClick(100,100); } ``` -### UiDriver.drag9+ +### longClick9+ -drag(startx: number, starty: number, endx: number, endy: number): Promise\ +longClick(x: number, y: number): Promise\ -Drags this **UiDriver** object from the given start point to the given end point. +Long-clicks a specific point of this **Driver** object based on the given coordinates. **System capability**: SystemCapability.Test.UiTest @@ -1259,25 +1693,101 @@ Drags this **UiDriver** object from the given start point to the given end point | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | -| startx | number | Yes | X coordinate of the start point.| -| starty | number | Yes | Y coordinate of the start point.| -| endx | number | Yes | X coordinate of the end point.| -| endy | number | Yes | Y coordinate of the end point.| +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.drag(100,100,200,200) + let driver = Driver.create(); + await driver.longClick(100,100); } ``` -### UiDriver.screenCap +### swipe9+ -screenCap(savePath: string): Promise\ +swipe(startx: number, starty: number, endx: number, endy: number, speed?: number): Promise\ -Captures the current screen of this **UiDriver** object and saves it as a PNG image to the given save path. +Swipes on this **Driver** object from the given start point to the given end point. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| startx | number | Yes | X-coordinate of the start point. | +| starty | number | Yes | Y-coordinate of the start point. | +| endx | number | Yes | X-coordinate of the end point. | +| endy | number | Yes | Y-coordinate of the end point. | +| speed | number | No | Scroll speed, in pixel/s. The value ranges from 200 to 15000. If the set value is not in the range, the default value 600 is used.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.swipe(100,100,200,200,600); +} +``` + +### drag9+ + +drag(startx: number, starty: number, endx: number, endy: number, speed?: number): Promise\ + +Drags this **Driver** object from the given start point to the given end point. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| startx | number | Yes | X-coordinate of the start point. | +| starty | number | Yes | Y-coordinate of the start point. | +| endx | number | Yes | X-coordinate of the end point. | +| endy | number | Yes | Y-coordinate of the end point. | +| speed | number | No | Scroll speed, in pixel/s. The value ranges from 200 to 15000. If the set value is not in the range, the default value 600 is used.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.drag(100,100,200,200,600); +} +``` + +### screenCap9+ + +screenCap(savePath: string): Promise\ + +Captures the current screen of this **Driver** object and saves it as a PNG image to the given save path. **System capability**: SystemCapability.Test.UiTest @@ -1289,30 +1799,1880 @@ Captures the current screen of this **UiDriver** object and saves it as a PNG im **Return value** -| Type | Description | -| -------------- | -------------------------------------- | -| Promise\ | Promise used to return the operation result. The value **true** means that the operation is successful.| +| Type | Description | +| ----------------- | -------------------------------------- | +| Promise\ | Promise used to return the operation result. The value **true** means that the operation is successful.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | **Example** ```js async function demo() { - let driver = UiDriver.create() - await driver.screenCap('/local/tmp/') + let driver = Driver.create(); + await driver.screenCap('/local/tmp/1.png'); } ``` -## MatchPattern +### setDisplayRotation9+ -Enumerates the match patterns supported for component attributes. +setDisplayRotation(rotation: DisplayRotation): Promise\ + +Sets the display rotation of the device. **System capability**: SystemCapability.Test.UiTest -| Name | Value | Description | -| ----------- | ---- | -------------- | -| EQUALS | 0 | Equal to the given value. | -| CONTAINS | 1 | Containing the given value. | -| STARTS_WITH | 2 | Starting from the given value.| -| ENDS_WITH | 3 | Ending with the given value.| +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------------------------------------ | ---- | ---------------- | +| rotation | [DisplayRotation](#displayrotation9) | Yes | Display rotation of the device.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). -### +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.setDisplayRotation(DisplayRotation.ROTATION_180); +} +``` + +### getDisplayRotation9+ + +getDisplayRotation(): Promise\ + +Obtains the display rotation of the current device. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------------------------------------- | --------------------------------------- | +| Promise\<[DisplayRotation](#displayrotation9)> | Promise used to return the display rotation of the current device.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let rotation = await driver.getDisplayRotation(); +} +``` + +### setDisplayRotationEnabled9+ + +setDisplayRotationEnabled(enabled: boolean): Promise\ + +Enables or disables display rotation. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ------- | ---- | ------------------------------------------------------- | +| enabled | boolean | Yes | Whether to enable display rotation. The value **true** means to enable display rotation, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.setDisplayRotationEnabled(false); +} +``` + +### getDisplaySize9+ + +getDisplaySize(): Promise\ + +Obtains the display size of the current device. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| -------------------------- | --------------------------------------- | +| Promise\<[Point](#point9)> | Promise used to return the display size of the current device.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let size = await driver.getDisplaySize(); +} +``` + +### getDisplayDensity9+ + +getDisplayDensity(): Promise\ + +Obtains the display density of the current device. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| -------------------------- | ----------------------------------------- | +| Promise\<[Point](#point9)> | Promise used to return the display density of the current device.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let density = await driver.getDisplayDensity(); +} +``` + +### wakeUpDisplay9+ + +wakeUpDisplay(): Promise\ + +Wakes up the device display. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.wakeUpDisplay(); +} +``` + +### pressHome9+ + +pressHome(): Promise\ + +Returns to the home screen. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.pressHome(); +} +``` + +### waitForIdle9+ + +waitForIdle(idleTime: number, timeout: number): Promise\ + +Checks whether all components on the current page are idle. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------ | ---- | ------------------------------------------------------------ | +| idleTime | number | Yes | Idle time threshold, in milliseconds. If the duration for which a component remains inactive reaches this threshold, it is considered as idle.| +| timeout | number | Yes | Maximum idle waiting time, in milliseconds. | + +**Return value** + +| Type | Description | +| ----------------- | --------------------------------------------------- | +| Promise\ | Promise used to return the result.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let idled = await driver.waitForIdle(4000,5000); +} +``` + +### fling9+ + +fling(from: Point, to: Point, stepLen: number, speed: number): Promise\ + +Simulates a fling operation on the screen. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ---------------- | ---- | ------------------------------------------------------------ | +| from | [Point](#point9) | Yes | Coordinates of the point where the finger touches the screen. | +| to | [Point](#point9) | Yes | Coordinates of the point where the finger leaves the screen. | +| stepLen | number | Yes | Fling step length, in pixels. | +| speed | number | Yes | Scroll speed, in pixel/s. The value ranges from 200 to 15000. If the set value is not in the range, the default value 600 is used.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + await driver.fling({X: 500, Y: 480},{X: 450, Y: 480},5,600); +} +``` + +### injectMultiPointerAction9+ + +injectMultiPointerAction(pointers: PointerMatrix, speed?: number): Promise\ + +Injects a multi-touch operation to the device. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | -------------------------------- | ---- | ------------------------------------------------------------ | +| pointers | [PointerMatrix](#pointermatrix9) | Yes | Scroll trajectory, including the number of fingers and an array of coordinates along the trajectory. | +| speed | number | No | Scroll speed, in pixel/s. The value ranges from 200 to 15000. If the set value is not in the range, the default value 600 is used.| + +**Return value** + +| Type | Description | +| ----------------- | ------------------------------------- | +| Promise\ | Promise used to return the result.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let pointers = PointerMatrix.create(2,3); + pointers.setPoint(0,0,{X:230,Y:480}); + pointers.setPoint(0,1,{X:250,Y:380}); + pointers.setPoint(0,2,{X:270,Y:280}); + pointers.setPoint(1,0,{X:230,Y:680}); + pointers.setPoint(1,1,{X:240,Y:580}); + pointers.setPoint(1,2,{X:250,Y:480}); + await driver.injectMultiPointerAction(pointers); +} +``` + +## PointerMatrix9+ + +Implements a **PointerMatrix** object that stores coordinates and behaviors of each action of each finger in a multi-touch operation. + +### create9+ + +static create(fingers: number, steps: number): PointerMatrix + +Creates a **PointerMatrix** object and returns the object created. This API is a static API. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ------ | ---- | ------------------------------------------ | +| fingers | number | Yes | Number of fingers in the multi-touch operation. Value range: [1,10].| +| steps | number | Yes | Number of steps operated by each finger. Value range: [1,1000].| + +**Return value** + +| Type | Description | +| -------------------------------- | ----------------------------- | +| [PointerMatrix](#pointermatrix9) | **PointerMatrix** object created.| + +**Example** + +```js +async function demo() { + let pointerMatrix = PointerMatrix.create(2,3); +} +``` + +### setPoint9+ + +setPoint(finger: number, step: number, point: Point): void + +Sets the coordinates for the action corresponding to the specified finger and step in the **PointerMatrix** object. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ---------------- | ---- | ---------------- | +| finger | number | Yes | Sequence number of the finger. | +| step | number | Yes | Sequence number of the step. | +| point | [Point](#point9) | Yes | Coordinates of the action.| + +**Example** + +```js +async function demo() { + let pointers = PointerMatrix.create(2,3); + pointers.setPoint(0,0,{X:230,Y:480}); + pointers.setPoint(0,1,{X:250,Y:380}); + pointers.setPoint(0,2,{X:270,Y:280}); + pointers.setPoint(1,0,{X:230,Y:680}); + pointers.setPoint(1,1,{X:240,Y:580}); + pointers.setPoint(1,2,{X:250,Y:480}); +} +``` + +## UiWindow9+ + +The **UiWindow** class represents a window on the UI and provides APIs for obtaining window attributes, dragging a window, and adjusting the window size. +All APIs provided in this class use a promise to return the result and must be invoked using **await**. + +### getBundleName9+ + +getBundleName(): Promise\ + +Obtains the bundle name of the application to which this window belongs. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------- | ----------------------------------------- | +| Promise\ | Promise used to return the bundle name.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + let name = await window.getBundleName(); +} +``` + +### getBounds9+ + +getBounds(): Promise\ + +Obtains the bounds information of this window. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ------------------------ | --------------------------------- | +| Promise\<[Rect](#rect9)> | Promise used to return the bounds information of the window.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + let rect = await window.getBounds(); +} +``` + +### getTitle9+ + +getTitle(): Promise\ + +Obtains the title of this window. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------- | --------------------------------- | +| Promise\ | Promise used to return the title of the window.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + let rect = await window.getTitle(); +} +``` + +### getWindowMode9+ + +getWindowMode(): Promise\ + +Obtains the window mode of this window. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ------------------------------------ | ------------------------------------- | +| Promise\<[WindowMode](#windowmode9)> | Promise used to return the window mode of the window.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + let mode = await window.getWindowMode(); +} +``` + +### isFocused9+ + +isFocused(): Promise\ + +Checks whether this window is in focused state. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the window is in focused state, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + let focused = await window.isFocused(); +} +``` + +### isActived9+ + +isActived(): Promise\ + +Checks whether this window is active. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the window is active, and **false** means the opposite.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + let focused = await window.isActived(); +} +``` + +### focus9+ + +focus(): Promise\ + +Moves the focus to this window. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.focus(); +} +``` + +### moveTo9+ + +moveTo(x: number, y: number): Promise\ + +Moves this window to the target point. This API is applicable to moveable windows. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | -------------------------------------- | +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.moveTo(100, 100); +} +``` + +### resize9+ + +resize(wide: number, height: number, direction: ResizeDirection): Promise\ + +Resizes this window based on the specified width, height, and resize direction. This API is applicable to resizable windows. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| --------- | ------------------------------------ | ---- | ------------------------------------------------------------ | +| wide | number | Yes | Target width. | +| height | number | Yes | Target height. | +| direction | [ResizeDirection](#resizedirection9) | Yes | Resize direction.| + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.resize(100, 100, ResizeDirection.LEFT); +} +``` + +### split9+ + +split(): Promise\ + +Switches the window to split-screen mode. This API is applicable to windows that support screen splitting. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.split(); +} +``` + +### maximize9+ + +maximize(): Promise\ + +Maximizes this window. This API is applicable to windows that can be maximized. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.maximize(); +} +``` + +### minimize9+ + +minimize(): Promise\ + +Minimizes this window. This API is applicable to windows that can be minimized. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.minimize(); +} +``` + +### resume9+ + +resume(): Promise\ + +Restores this window to the previous window mode. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.resume(); +} +``` + +### close9+ + +close(): Promise\ + +Closes this window. + +**System capability**: SystemCapability.Test.UiTest + +**Error codes** + +For details about the error codes, see [UiTest Error Codes](../errorcodes/errorcode-uitest.md). + +| ID| Error Message | +| -------- | ---------------------------------------- | +| 17000002 | API does not allow calling concurrently. | +| 17000004 | Component lost/UiWindow lost. | +| 17000005 | This operation is not supported. | + +**Example** + +```js +async function demo() { + let driver = Driver.create(); + let window = await driver.findWindow({actived: true}); + await window.close(); +} +``` + +## By(deprecated) + +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:
1. Allow one or more attributes as the match conditions. For example, you can specify both the **text** and **id** attributes to find the target component.
2. Provide multiple match patterns for component attributes.
3. Support absolute positioning and relative positioning for components. APIs such as [By.isBefore(deprecated)](#isbeforedeprecated) and [By.isAfter(deprecated)](#isafterdeprecated) 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. + +This API is deprecated since API version 9. You are advised to use [On9+](#on9) instead. + +```js +BY.text('123').type('button'); +``` + +### text(deprecated) + +text(txt: string, pattern?: MatchPattern): By + +Specifies the text attribute of the target component. Multiple match patterns are supported. + +This API is deprecated since API version 9. You are advised to use [text9+](#text9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ----------------------------- | ---- | --------------------------------------------------- | +| txt | string | Yes | Component text, used to match the target component. | +| pattern | [MatchPattern](#matchpattern) | No | Match pattern. The default value is [EQUALS](#matchpattern).| + +**Return value** + +| Type | Description | +| ------------------- | ---------------------------------- | +| [By](#bydeprecated) | **By** object that matches the text attribute of the target component.| + +**Example** + +```js +let by = BY.text('123'); // Use the static constructor BY to create a By object and specify the text attribute of the target component. +``` + + +### key(deprecated) + +key(key: string): By + +Specifies the key attribute of the target component. + +This API is deprecated since API version 9. You are advised to use [id9+](#id9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ----------------- | +| key | string | Yes | Component key.| + +**Return value** + +| Type | Description | +| ------------------- | ----------------------------------- | +| [By](#bydeprecated) | **By** object that matches the key attribute of the target component.| + +**Example** + +```js +let by = BY.key('123'); // Use the static constructor BY to create a By object and specify the key attribute of the target component. +``` + + +### id(deprecated) + +id(id: number): By + +Specifies the ID attribute of the target component. + +This API is deprecated since API version 9. + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ---------------- | +| id | number | Yes | Component ID.| + +**Return value** + +| Type | Description | +| ------------------- | -------------------------------- | +| [By](#bydeprecated) | **By** object that matches the ID attribute of the target component.| + +**Example** + +```js +let by = BY.id(123); // Use the static constructor BY to create a By object and specify the ID attribute of the target component. +``` + + +### type(deprecated) + +type(tp: string): By + +Specifies the type attribute of the target component. + +This API is deprecated since API version 9. You are advised to use [type9+](#type9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | -------------- | +| tp | string | Yes | Component type.| + +**Return value** + +| Type | Description | +| ------------------- | ---------------------------------------- | +| [By](#bydeprecated) | **By** object that matches the type attribute of the target component.| + +**Example** + +```js +let by = BY.type('button'); // Use the static constructor BY to create a By object and specify the type attribute of the target component. +``` + + +### clickable(deprecated) + +clickable(b?: boolean): By + +Specifies the clickable status attribute of the target component. + +This API is deprecated since API version 9. You are advised to use [clickable9+](#clickable9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Clickable status of the target component.
**true**: clickable.
**false**: not clickable.
Default value: **true**| + +**Return value** + +| Type | Description | +| ------------------- | ------------------------------------------ | +| [By](#bydeprecated) | **By** object that matches the clickable status attribute of the target component.| + +**Example** + +```js +let by = BY.clickable(true); // Use the static constructor BY to create a By object and specify the clickable status attribute of the target component. +``` + + +### scrollable(deprecated) + +scrollable(b?: boolean): By + +Specifies the scrollable status attribute of the target component. + +This API is deprecated since API version 9. You are advised to use [scrollable9+](#scrollable9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ----------------------------------------------------------- | +| b | boolean | No | Scrollable status of the target component.
**true**: scrollable.
**false**: not scrollable.
Default value: **true**| + +**Return value** + +| Type | Description | +| ------------------- | ------------------------------------------ | +| [By](#bydeprecated) | **By** object that matches the scrollable status attribute of the target component.| + +**Example** + +```js +let by = BY.scrollable(true); // Use the static constructor BY to create a By object and specify the scrollable status attribute of the target component. +``` + +### enabled(deprecated) + +enabled(b?: boolean): By + +Specifies the enabled status attribute of the target component. + +This API is deprecated since API version 9. You are advised to use [enabled9+](#enabled9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | --------------------------------------------------------- | +| b | boolean | No | Enabled status of the target component.
**true**: enabled.
**false**: not disabled.
Default value: **true**| + +**Return value** + +| Type | Description | +| ------------------- | ---------------------------------------- | +| [By](#bydeprecated) | **By** object that matches the enabled status attribute of the target component.| + +**Example** + +```js +let by = BY.enabled(true); // Use the static constructor BY to create a By object and specify the enabled status attribute of the target component. +``` + +### focused(deprecated) + +focused(b?: boolean): By + +Specifies the focused status attribute of the target component. + +This API is deprecated since API version 9. You are advised to use [focused9+](#focused9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ----------------------------------------------------- | +| b | boolean | No | Focused status of the target component.
**true**: focused.
**false**: not focused.
Default value: **true**| + +**Return value** + +| Type | Description | +| ------------------- | ---------------------------------------- | +| [By](#bydeprecated) | **By** object that matches the focused status attribute of the target component.| + +**Example** + +```js +let by = BY.focused(true); // Use the static constructor BY to create a By object and specify the focused status attribute of the target component. +``` + +### selected(deprecated) + +selected(b?: boolean): By + +Specifies the selected status of the target component. + +This API is deprecated since API version 9. You are advised to use [selected9+](#selected9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------- | ---- | ------------------------------------------------------------ | +| b | boolean | No | Selected status of the target component.
**true**: selected.
**false**: not selected.
Default value: **true**| + +**Return value** + +| Type | Description | +| ------------------- | ------------------------------------------ | +| [By](#bydeprecated) | **By** object that matches the selected status attribute of the target component.| + +**Example** + +```js +let by = BY.selected(true); // Use the static constructor BY to create a By object and specify the selected status attribute of the target component. +``` + +### isBefore(deprecated) + +isBefore(by: By): By + +Specifies the attributes of the component before which the target component is located. + +This API is deprecated since API version 9. You are advised to use [isBefore9+](#isbefore9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------- | ---- | ---------------- | +| by | [By](#bydeprecated) | Yes | Attributes of the component before which the target component is located.| + +**Return value** + +| Type | Description | +| ------------------- | ---------------------------------------------------- | +| [By](#bydeprecated) | **By** object.| + +**Example** + +```js +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. +``` + +### isAfter(deprecated) + +isAfter(by: By): By + +Specifies the attributes of the component after which the target component is located. + +This API is deprecated since API version 9. You are advised to use [isAfter9+](#isafter9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------- | ---- | ---------------- | +| by | [By](#bydeprecated) | Yes | Attributes of the component before which the target component is located.| + +**Return value** + +| Type | Description | +| ------------------- | ---------------------------------------------------- | +| [By](#bydeprecated) | **By** object.| + +**Example** + +```js +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(deprecated) + +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 in this class use a promise to return the result and must be invoked using **await**. + +This API is deprecated since API version 9. You are advised to use [Component9+](#component9) instead. + +### click(deprecated) + +click(): Promise\ + +Clicks this component. + +This API is deprecated since API version 9. You are advised to use [click9+](#click9). + +**System capability**: SystemCapability.Test.UiTest + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + await button.click(); +} +``` + +### doubleClick(deprecated) + +doubleClick(): Promise\ + +Double-clicks this component. + +This API is deprecated since API version 9. You are advised to use [doubleClick9+](#doubleclick9). + +**System capability**: SystemCapability.Test.UiTest + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + await button.doubleClick(); +} +``` + +### longClick(deprecated) + +longClick(): Promise\ + +Long-clicks this component. + +This API is deprecated since API version 9. You are advised to use [longClick9+](#longclick9). + +**System capability**: SystemCapability.Test.UiTest + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + await button.longClick(); +} +``` + +### getId(deprecated) + +getId(): Promise\ + +Obtains the ID of this component. + +This API is deprecated since API version 9. + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------- | ------------------------------- | +| Promise\ | Promise used to return the ID of the component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + let num = await button.getId(); +} +``` + +### getKey(deprecated) + +getKey(): Promise\ + +Obtains the key of this component. + +This API is deprecated since API version 9. You are advised to use [getId9+](#getid9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------- | ------------------------------ | +| Promise\ | Promise used to return the key of the component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + let str_key = await button.getKey(); +} +``` + +### getText(deprecated) + +getText(): Promise\ + +Obtains the text information of this component. + +This API is deprecated since API version 9. You are advised to use [getText9+](#gettext9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------- | --------------------------------- | +| Promise\ | Promise used to return the text information of the component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + let text = await button.getText(); +} +``` + +### getType(deprecated) + +getType(): Promise\ + +Obtains the type of this component. + +This API is deprecated since API version 9. You are advised to use [getType9+](#gettype9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ---------------- | ----------------------------- | +| Promise\ | Promise used to return the type of the component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.type('button')); + let type = await button.getType(); +} +``` + +### isClickable(deprecated) + +isClickable(): Promise\ + +Obtains the clickable status of this component. + +This API is deprecated since API version 9. You are advised to use [isClickable9+](#isclickable9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the component is clickable, and **false** means the opposite.| + +**Example** + +```js +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'); + } +} +``` + +### isScrollable(deprecated) + +isScrollable(): Promise\ + +Obtains the scrollable status of this component. + +This API is deprecated since API version 9. You are advised to use [isScrollable9+](#isscrollable9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the component is scrollable, and **false** means the opposite.| + +**Example** + +```js +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'); + } +} +``` + + +### isEnabled(deprecated) + +isEnabled(): Promise\ + +Obtains the enabled status of this component. + +This API is deprecated since API version 9. You are advised to use [isEnabled9+](#isenabled9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ---------------------------------------------------------- | +| Promise\ | Promise used to return the result. The value **true** means that the component is enabled, and **false** means the opposite.| + +**Example** + +```js +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'); + } +} + +``` + +### isFocused(deprecated) + +isFocused(): Promise\ + +Obtains the focused status of this component. + +This API is deprecated since API version 9. You are advised to use [isFocused9+](#isfocused9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | Promise used to return the result. The value **true** means that the target component is focused, and **false** means the opposite.| + +**Example** + +```js +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'); + } +} +``` + +### isSelected(deprecated) + +isSelected(): Promise\ + +Obtains the selected status of this component. + +This API is deprecated since API version 9. You are advised to use [isSelected9+](#isselected9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| ----------------- | ----------------------------------------------------- | +| Promise\ | Promise used to return the result. The value **true** means that the component is selected, and **false** means the opposite.| + +**Example** + +```js +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'); + } +} +``` + +### inputText(deprecated) + +inputText(text: string): Promise\ + +Enters text into this component (available for text boxes). + +This API is deprecated since API version 9. You are advised to use [inputText9+](#inputtext9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | ---------------- | +| text | string | Yes | Text to enter.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let text = await driver.findComponent(BY.text('hello world')); + await text.inputText('123'); +} +``` + +### scrollSearch(deprecated) + +scrollSearch(by: By): Promise\ + +Scrolls on this component to search for the target component (applicable to components that support scrolling, such as **\**). + +This API is deprecated since API version 9. You are advised to use [scrollSearch9+](#scrollsearch9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------- | ---- | -------------------- | +| by | [By](#bydeprecated) | Yes | Attributes of the target component.| + +**Return value** + +| Type | Description | +| ----------------------------------------------- | ------------------------------------- | +| Promise\<[UiComponent](#uicomponentdeprecated)> | Promise used to return the target component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let scrollBar = await driver.findComponent(BY.type('Scroll')); + let button = await scrollBar.scrollSearch(BY.text('next page')); +} +``` + +## UiDriver(deprecated) + +The **UiDriver** class is the main entry to the UiTest 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**. + +This API is deprecated since API version 9. You are advised to use [Driver9+](#driver9) instead. + +### create(deprecated) + +static create(): UiDriver + +Creates a **UiDriver** object and returns the object created. This API is a static API. + +This API is deprecated since API version 9. You are advised to use [create9+](#create9). + +**System capability**: SystemCapability.Test.UiTest + +**Return value** + +| Type | Description | +| -------- | ------------------------ | +| UiDriver | Returns the **UiDriver** object created.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); +} +``` + +### delayMs(deprecated) + +delayMs(duration: number): Promise\ + +Delays this **UiDriver** object within the specified duration. + +This API is deprecated since API version 9. You are advised to use [delayMs9+](#delayms9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------ | ---- | ------------ | +| duration | number | Yes | Duration of time.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.delayMs(1000); +} +``` + +### findComponent(deprecated) + +findComponent(by: By): Promise\ + +Searches this **UiDriver** object for the target component that matches the given attributes. + +This API is deprecated since API version 9. You are advised to use [findComponent9+](#findcomponent9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------- | ---- | -------------------- | +| by | [By](#bydeprecated) | Yes | Attributes of the target component.| + +**Return value** + +| Type | Description | +| ----------------------------------------------- | --------------------------------- | +| Promise\<[UiComponent](#uicomponentdeprecated)> | Promise used to return the found component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let button = await driver.findComponent(BY.text('next page')); +} +``` + +### findComponents(deprecated) + +findComponents(by: By): Promise\> + +Searches this **UiDriver** object for all components that match the given attributes. + +This API is deprecated since API version 9. You are advised to use [findComponents9+](#findcomponents9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------- | ---- | -------------------- | +| by | [By](#bydeprecated) | Yes | Attributes of the target component.| + +**Return value** + +| Type | Description | +| ------------------------------------------------------- | --------------------------------------- | +| Promise\> | Promise used to return a list of found components.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + let buttonList = await driver.findComponents(BY.text('next page')); +} +``` + +### assertComponentExist(deprecated) + +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. + +This API is deprecated since API version 9. You are advised to use [assertComponentExist9+](#assertcomponentexist9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------------------- | ---- | -------------------- | +| by | [By](#bydeprecated) | Yes | Attributes of the target component.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.assertComponentExist(BY.text('next page')); +} +``` + +### pressBack(deprecated) + +pressBack(): Promise\ + +Presses the Back button on this **UiDriver** object. + +This API is deprecated since API version 9. You are advised to use [pressBack9+](#pressback9). + +**System capability**: SystemCapability.Test.UiTest + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.pressBack(); +} +``` + +### triggerKey(deprecated) + +triggerKey(keyCode: number): Promise\ + +Triggers the key of this **UiDriver** object that matches the given key code. + +This API is deprecated since API version 9. You are advised to use [triggerKey9+](#triggerkey9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| ------- | ------ | ---- | ------------- | +| keyCode | number | Yes | Key code.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.triggerKey(123); +} +``` + + +### click(deprecated) + +click(x: number, y: number): Promise\ + +Clicks a specific point of this **UiDriver** object based on the given coordinates. + +This API is deprecated since API version 9. You are advised to use [click9+](#click9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | -------------------------------------- | +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.click(100,100); +} +``` + +### doubleClick(deprecated) + +doubleClick(x: number, y: number): Promise\ + +Double-clicks a specific point of this **UiDriver** object based on the given coordinates. + +This API is deprecated since API version 9. You are advised to use [doubleClick9+](#doubleclick9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | -------------------------------------- | +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.doubleClick(100,100); +} +``` + +### longClick(deprecated) + +longClick(x: number, y: number): Promise\ + +Long-clicks a specific point of this **UiDriver** object based on the given coordinates. + +This API is deprecated since API version 9. You are advised to use [longClick9+](#longclick9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | -------------------------------------- | +| x | number | Yes | X-coordinate of the target point.| +| y | number | Yes | Y-coordinate of the target point.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.longClick(100,100); +} +``` + +### swipe(deprecated) + +swipe(startx: number, starty: number, endx: number, endy: number): Promise\ + +Swipes on this **UiDriver** object from the start point to the end point based on the given coordinates. + +This API is deprecated since API version 9. You are advised to use [swipe9+](#swipe9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name| Type | Mandatory| Description | +| ------ | ------ | ---- | -------------------------------------- | +| startx | number | Yes | X-coordinate of the start point.| +| starty | number | Yes | Y-coordinate of the start point.| +| endx | number | Yes | X-coordinate of the end point.| +| endy | number | Yes | Y-coordinate of the end point.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.swipe(100,100,200,200); +} +``` + +### screenCap(deprecated) + +screenCap(savePath: string): Promise\ + +Captures the current screen of this **UiDriver** object and saves it as a PNG image to the given save path. + +This API is deprecated since API version 9. You are advised to use [screenCap9+](#screencap9). + +**System capability**: SystemCapability.Test.UiTest + +**Parameters** + +| Name | Type | Mandatory| Description | +| -------- | ------ | ---- | -------------- | +| savePath | string | Yes | File save path.| + +**Return value** + +| Type | Description | +| ----------------- | -------------------------------------- | +| Promise\ | Promise used to return the operation result. The value **true** means that the operation is successful.| + +**Example** + +```js +async function demo() { + let driver = UiDriver.create(); + await driver.screenCap('/local/tmp/1.png'); +} +``` diff --git a/en/application-dev/reference/errorcodes/errorcode-uitest.md b/en/application-dev/reference/errorcodes/errorcode-uitest.md new file mode 100644 index 0000000000000000000000000000000000000000..1a890ff377ca4e594729c610e888d4f455b87379 --- /dev/null +++ b/en/application-dev/reference/errorcodes/errorcode-uitest.md @@ -0,0 +1,87 @@ +# UiTest Error Codes + +## 17000001 Initialization Failure + +**Error Message** + +Initialize failed. + +**Description** + +This error code is reported when the framework fails to be initialized. + +**Possible Causes** + +The accessibility service cannot be accessed. + +**Solution** + +Run the **param set persist.ace.testmode.enabled 1** command and restart the device. + +## 17000002 Unable to Call the API +**Error Message** + +API does not allow calling concurrently. + +**Description** + +This error code is reported when the API fails to be called. + +**Possible Causes** + +The API was not called using **await**. + +**Solution** + +Check test cases and make sure asynchronous APIs are called using **await**. + +## 17000003 Assertion Failure +**Error Message** + +Component existence assertion failed. + +**Description** + +This error code is reported when the user assertion fails. + +**Possible Causes** + +The component that the user asserts to exist does not exist. + +**Solution** + +Check the existence of the component that is asserted to exist. + +## 17000004 Target Component/Window Lost +**Error Message** + +Component lost/UiWindow lost. + +**Description** + +This error code is reported when the target component or window is lost and cannot be operated. + +**Possible Causes** + +After the target component or window is obtained, the page changes. As a result, the target component or window is lost. + +**Solution** + +Check whether the loss is caused by page changes. + +## 17000005 Operation Not Supported +**Error Message** + +This operation is not supported. + +**Description** + +This error code is reported when the performed operation is not supported by the UI object. + +**Possible Causes** + +The component or window attribute does not support the performed operation. + +**Solution** + +Make sure the operation to perform is supported by the component or window attribute.