js-apis-uitest.md 31.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# UiTest

>**说明:**
>
>本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块 

```
import {UiDriver,BY,MatchPattern} from '@ohos.uitest'
```

## By

16
UiTest框架通过By类提供了丰富的控件特征描述API,用以进行控件筛选来匹配/查找出目标控件。<br>
17
By提供的API能力具有以下几个特点:<br>1、支持单属性匹配和多属性组合匹配,例如同时指定目标控件text和id。<br>2、控件属性支持多种匹配模式。<br>3、支持控件绝对定位,相对定位,可通过[By.isBefore](#byisbefore)[By.isAfter](#byisafter)等API限定邻近控件特征进行辅助定位。<br>By类提供的所有API均为同步接口,建议使用者通过静态构造器BY来链式创建By对象。
18 19 20 21

```js
BY.text('123').type('button')
```
22 23 24

### By.text

25
text(txt: string, pattern?: MatchPattern): By
26 27 28 29 30 31 32

指定目标控件文本属性,支持多种匹配模式,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

33 34 35 36
| 参数名  | 类型         | 必填 | 说明                                              |
| ------- | ------------ | ---- | ------------------------------------------------- |
| txt     | string       | 是   | 指定控件文本,用于匹配目标控件文本。              |
| pattern | MatchPattern | 否   | 指定的文本匹配模式,默认为[EQUALS](#matchpattern) |
37 38 39 40 41 42 43 44 45

**返回值:**

| 类型 | 说明           |
| ---- | -------------- |
| By   | 返回By对象自身 |

**示例:**

46 47
```js
let by = BY.text('123') //使用静态构造器BY创建by对象,指定目标控件的text属性。
48 49 50 51 52
```


### By.key

53
key(key: string): By
54 55 56 57 58 59 60

指定目标控件key值属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

61 62 63
| 参数名 | 类型   | 必填 | 说明              |
| ------ | ------ | ---- | ----------------- |
| key    | string | 是   | 指定控件的Key值。 |
64 65 66

**返回值:**

67 68 69
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
70 71 72

**示例:**

73 74
```js
let by = BY.key('123') //使用静态构造器BY创建by对象,指定目标控件的key值属性。
75 76 77 78 79
```


### By.id

80
id(id: number): By
81 82 83 84 85 86 87

指定目标控件id属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

88 89 90
| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| id     | number | 是   | 指定控件的id值。 |
91 92 93

**返回值:**

94 95 96
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
97 98 99

**示例:**

100 101
```js
let by = BY.id(123) //使用静态构造器BY创建by对象,指定目标控件的id属性。
102 103 104 105 106
```


### By.type

107
type(tp: string): By
108 109 110 111 112 113 114

指定目标控件的控件类型属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

115 116 117
| 参数名 | 类型   | 必填 | 说明           |
| ------ | ------ | ---- | -------------- |
| tp     | string | 是   | 指定控件类型。 |
118 119 120

**返回值:**

121 122 123
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
124 125 126

**示例:**

127 128
```js
let by = BY.type('button') //使用静态构造器BY创建by对象,指定目标控件的控件类型属性。
129 130 131 132 133
```


### By.clickable

134
clickable(b?: bool): By
135 136 137 138 139 140 141

指定目标控件的可点击状态属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

142 143 144
| 参数名 | 类型 | 必填 | 说明                             |
| ------ | ---- | ---- | -------------------------------- |
| b      | bool | 否   | 指定控件可点击状态,默认为true。 |
145 146 147

**返回值:**

148 149 150
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
151 152 153

**示例:**

154 155
```js
let by = BY.clickable(true) //使用静态构造器BY创建by对象,指定目标控件的可点击状态属性。
156
```
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181

### By.longClickable<sup>9+</sup>

longClickable(b?: bool): By

指定目标控件的可长按点击状态属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

| 参数名 | 类型 | 必填 | 说明                                 |
| ------ | ---- | ---- | ------------------------------------ |
| b      | bool | 否   | 指定控件可长按点击状态,默认为true。 |

**返回值:**

| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |

**示例:**

```js
let by = BY.longClickable(true) //使用静态构造器BY创建by对象,指定目标控件的可长按点击状态属性。
182 183 184 185 186
```


### By.scrollable

187
scrollable(b?: bool): By
188 189 190 191 192 193 194

指定目标控件的可滑动状态属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

195 196 197
| 参数名 | 类型 | 必填 | 说明                         |
| ------ | ---- | ---- | ---------------------------- |
| b      | bool | 否   | 控件可滑动状态,默认为true。 |
198 199 200

**返回值:**

201 202 203
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
204 205 206

**示例:**

207 208
```js
let by = BY.scrollable(true) //使用静态构造器BY创建by对象,指定目标控件的可滑动状态属性。
209 210 211 212
```

### By.enabled

213
enabled(b?: bool): By
214 215 216 217 218 219 220

指定目标控件的使能状态属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

221 222 223
| 参数名 | 类型 | 必填 | 说明                           |
| ------ | ---- | ---- | ------------------------------ |
| b      | bool | 否   | 指定控件使能状态,默认为true。 |
224 225 226

**返回值:**

227 228 229
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
230 231 232

**示例:**

233 234
```js
let by = BY.enabled(true) //使用静态构造器BY创建by对象,指定目标控件的使能状态属性。
235 236 237 238
```

### By.focused

239
focused(b?: bool): By
240 241 242 243 244 245 246

指定目标控件的获焦状态属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

247 248 249
| 参数名 | 类型 | 必填 | 说明                       |
| ------ | ---- | ---- | -------------------------- |
| b      | bool | 否   | 控件获焦状态,默认为true。 |
250 251 252

**返回值:**

253 254 255
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
256 257 258

**示例:**

259 260
```js
let by = BY.focused(true) //使用静态构造器BY创建by对象,指定目标控件的获焦状态属性。
261 262 263 264
```

### By.selected

265
selected(b?: bool): By
266 267 268

指定目标控件的被选中状态属性,返回By对象自身。

269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
**系统能力**:SystemCapability.Test.UiTest

**参数:**

| 参数名 | 类型 | 必填 | 说明                             |
| ------ | ---- | ---- | -------------------------------- |
| b      | bool | 否   | 指定控件被选中状态,默认为true。 |

**返回值:**

| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |

**示例:**

```js
let by = BY.selected(true) //使用静态构造器BY创建by对象,指定目标控件的被选中状态属性。
```

### By.checked<sup>9+</sup>

checked(b?: bool): By

指定目标控件的被勾选状态属性,返回By对象自身。
294 295 296 297 298

**系统能力**:SystemCapability.Test.UiTest

**参数:**

299 300 301
| 参数名 | 类型 | 必填 | 说明                              |
| ------ | ---- | ---- | --------------------------------- |
| b      | bool | 否   | 指定控件被勾选状态,默认为false。 |
302 303 304 305 306 307 308 309 310

**返回值:**

| 类型 | 说明           |
| ---- | -------------- |
| By   | 返回By对象自身 |

**示例:**

311 312
```js
let by = BY.checked(true) //使用静态构造器BY创建by对象,指定目标控件的被勾选状态属性
313
```
314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338

### By.checkable<sup>9+</sup>

checkable(b?: bool): By

指定目标控件能否被勾选状态属性,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

| 参数名 | 类型 | 必填 | 说明                                  |
| ------ | ---- | ---- | ------------------------------------- |
| b      | bool | 否   | 指定控件能否被勾选状态,默认为false。 |

**返回值:**

| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |

**示例:**

```js
let by = BY.checkable(true) //使用静态构造器BY创建by对象,指定目标控件的能否被勾选状态属性。
339 340
```

341
### By.isBefore
342

343
isBefore(by: By): By
344 345 346 347 348 349 350

指定目标控件位于给出的特征属性控件之前,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

351 352 353
| 参数名 | 类型 | 必填 | 说明             |
| ------ | ---- | ---- | ---------------- |
| by     | By   | 是   | 特征控件的属性。 |
354 355 356

**返回值:**

357 358 359
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
360 361 362

**示例:**

363 364
```js
let by = BY.isBefore(BY.text('123')) //使用静态构造器BY创建by对象,指定目标控件位于给出的特征属性控件之前。
365 366
```

367
### By.isAfter
368

369
isAfter(by: By): By
370 371 372 373 374 375 376

指定目标控件位于给出的特征属性控件之后,返回By对象自身。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

377 378 379
| 参数名 | 类型 | 必填 | 说明             |
| ------ | ---- | ---- | ---------------- |
| by     | By   | 是   | 特征控件的属性。 |
380 381 382

**返回值:**

383 384 385
| 类型 | 说明             |
| ---- | ---------------- |
| By   | 返回By对象自身。 |
386 387 388

**示例:**

389 390
```js
let by = BY.isAfter(BY.text('123')) //使用静态构造器BY创建by对象,指定目标控件位于给出的特征属性控件之后。
391 392 393 394 395 396 397
```

## UiComponent

UiTest中,UiComponent类代表了UI界面上的一个控件,提供控件属性获取,控件点击,滑动查找,文本注入等API。
该类提供的所有方法都使用Promise方式作为异步方法,需使用await调用。

398 399 400 401 402 403 404 405 406 407 408 409 410
### Rect<sup>9+</sup>

控件的边框信息。

**系统能力**:SystemCapability.Test.UiTest 

| 名称    | 参数类型 | 可读 | 可写 | 描述                      |
| ------- | -------- | ---- | ---- | ------------------------- |
| leftX   | number   | 是   | 否   | 控件边框的左上角的X坐标。 |
| topY    | number   | 是   | 否   | 控件边框的左上角的Y坐标。 |
| rightX  | number   | 是   | 否   | 控件边框的右下角的X坐标。 |
| bottomY | number   | 是   | 否   | 控件边框的右下角的Y坐标。 |

411 412
### UiComponent.click

413
click(): Promise\<void>
414 415 416 417 418 419 420

控件对象进行点击操作。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

421
```js
422 423 424 425 426
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    await button.click()
}
427 428 429 430
```

### UiComponent.doubleClick

431
doubleClick(): Promise\<void>
432 433 434 435 436 437 438

控件对象进行双击操作。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

439
```js
440 441 442
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
443
    await button.doubleClick()
444
}
445 446 447 448
```

### UiComponent.longClick

449
longClick(): Promise\<void>
450 451 452 453 454 455 456

控件对象进行长按操作。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

457
```js
458 459 460 461 462
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    await button.longClick()
}
463 464 465 466
```

### UiComponent.getId

467
getId(): Promise\<number>
468 469 470 471 472 473 474

获取控件对象的id值。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

475 476 477
| 类型             | 说明                            |
| ---------------- | ------------------------------- |
| Promise\<number> | 以Promise形式返回的控件的id值。 |
478 479 480

**示例:**

481
```js
482 483 484 485 486
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    let num = await button.getId()
}
487 488 489 490
```

### UiComponent.getKey

491
getKey(): Promise\<string>
492 493 494 495 496 497 498

获取控件对象的key值。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

499 500 501
| 类型             | 说明                           |
| ---------------- | ------------------------------ |
| Promise\<string> | 以Promise形式返回控件的key值。 |
502 503 504

**示例:**

505
```js
506 507 508 509 510
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    let str_key = await button.getKey()
}
511 512 513 514
```

### UiComponent.getText

515
getText(): Promise\<string>
516 517 518 519 520 521 522

获取控件对象的文本信息。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

523 524 525
| 类型             | 说明                              |
| ---------------- | --------------------------------- |
| Promise\<string> | 以Promise形式返回控件的文本信息。 |
526 527 528

**示例:**

529
```js
530 531 532 533 534
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    let text = await button.getText()
}
535 536 537 538
```

### UiComponent.getType

539
getType(): Promise\<string>
540 541 542 543 544 545 546

获取控件对象的控件类型。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

547 548 549
| 类型             | 说明                          |
| ---------------- | ----------------------------- |
| Promise\<string> | 以Promise形式返回控件的类型。 |
550 551 552

**示例:**

553
```js
554 555 556 557 558
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    let type = await button.getType()
}
559 560
```

561 562
### UiComponent.getBounds<sup>9+</sup>

563
getBounds(): Promise\<Rect>
564 565 566 567 568 569 570

获取控件对象的边框信息。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

571 572 573
| 类型           | 说明                                  |
| -------------- | ------------------------------------- |
| Promise\<Rect> | 以Promise形式返回控件对象的边框信息。 |
574 575 576 577 578 579 580 581 582 583 584

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    let rect = await button.getBounds()
}
```

585 586
### UiComponent.isClickable

587
isClickable(): Promise\<bool>
588 589 590 591 592 593 594

获取控件对象可点击状态。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

595 596 597
| 类型           | 说明                                  |
| -------------- | ------------------------------------- |
| Promise\<bool> | 以Promise形式返回控件对象可点击状态。 |
598 599 600

**示例:**

601
```js
602 603 604 605 606 607 608 609 610 611
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')
    }
}
612 613
```

614
### UiComponent.isLongClickable<sup>9+</sup>
615

616
isLongClickable(): Promise\<bool> 
617

618 619 620 621 622 623
获取控件对象可长按点击状态。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

624 625 626
| 类型           | 说明                                        |
| -------------- | ------------------------------------------- |
| Promise\<bool> | 以Promise形式返回控件对象能否长按点击状态。 |
627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    if(await button.isLongClickable()) {
        console.info('This button can longClick')
    }
    else{
        console.info('This button can not longClick')
    }
}
```

### UiComponent.isChecked<sup>9+</sup>

645
isLongClickable(): Promise\<bool>
646 647 648 649 650 651 652

获取控件对象被勾选状态。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

653 654 655
| 类型           | 说明                                  |
| -------------- | ------------------------------------- |
| Promise\<bool> | 以Promise形式返回控件对象被勾选状态。 |
656

657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673
**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let checkBox = await driver.findComponent(BY.type('Checkbox'))
    if(await checkBox.isChecked) {
        console.info('This checkBox is checked')
    }
    else{
        console.info('This checkBox is not checked')
    }
}
```

### UiComponent.isCheckable<sup>9+</sup>

674
isCheckable(): Promise\<bool>
675 676

获取控件对象能否被勾选的属性。
677 678 679 680 681

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

682 683 684
| 类型           | 说明                                        |
| -------------- | ------------------------------------------- |
| Promise\<bool> | 以Promise形式返回控件对象能否被勾选的属性。 |
685 686 687

**示例:**

688 689 690 691 692 693 694 695 696 697 698
```js
async function demo() {
    let driver = UiDriver.create()
    let checkBox = await driver.findComponent(BY.type('Checkbox'))
    if(await checkBox.isCheckable) {
        console.info('This checkBox is checkable')
    }
    else{
        console.info('This checkBox is not checkable')
    }
}
699
```
700 701 702

### UiComponent.isScrollable

703
isScrollable(): Promise\<bool>
704 705 706 707 708 709 710

获取控件对象可滑动状态。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

711 712 713
| 类型           | 说明                                  |
| -------------- | ------------------------------------- |
| Promise\<bool> | 以Promise形式返回控件对象可滑动状态。 |
714 715 716 717

**示例:**

```js
718 719 720 721 722 723 724 725 726 727
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')
    }
}
728 729 730 731 732
```


### UiComponent.isEnabled

733
isEnabled(): Promise\<bool>
734 735 736 737 738 739 740

获取控件使能状态。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

741 742 743
| 类型           | 说明                            |
| -------------- | ------------------------------- |
| Promise\<bool> | 以Promise形式返回控件使能状态。 |
744 745 746

**示例:**

747
```js
748 749 750 751 752 753 754 755 756 757 758
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')
    }
}

759 760 761 762
```

### UiComponent.isFocused

763
isFocused(): Promise\<bool>
764 765 766 767 768 769 770

判断控件对象是否获焦。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

771 772 773
| 类型           | 说明                                |
| -------------- | ----------------------------------- |
| Promise\<bool> | 以Promise形式返回控件对象是否获焦。 |
774 775 776

**示例:**

777
```js
778 779 780 781 782 783 784 785 786 787
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')
	}
}
788 789 790 791
```

### UiComponent.isSelected

792
isSelected(): Promise\<bool>
793 794 795 796 797 798 799

获取控件对象被选中状态。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

800 801 802
| 类型           | 说明                 |
| -------------- | -------------------- |
| Promise\<bool> | 控件对象被选中的状态 |
803 804 805

**示例:**

806
```js
807 808 809 810 811 812 813 814 815 816
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')
    }
}
817 818 819 820
```

### UiComponent.inputText

821
inputText(text: string): Promise\<void>
822 823 824 825 826 827 828

向控件中输入文本(适用于文本框控件)。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

829 830 831
| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| text   | string | 是   | 输入的文本信息。 |
832 833 834

**示例:**

835 836 837 838 839 840
```js
async function demo() {
    let driver = UiDriver.create()
    let text = await driver.findComponent(BY.text('hello world'))
    await text.inputText('123')
}
841
```
842 843 844

### UiComponent.clearText<sup>9+</sup>

845
clearText(): Promise\<void>
846 847 848 849 850 851 852 853

清除控件的文本信息(适用于文本框控件)。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

```js
854 855
async function demo() {
    let driver = UiDriver.create()
856 857
    let text = await driver.findComponent(BY.text('hello world'))
    await text.clearText()
858
}
859 860 861 862
```

### UiComponent.scrollSearch

863
scrollSearch(by:By): Promise\<UiComponent>
864

865
在控件上滑动查找目标控件(适用于List等支持滑动的控件)。
866 867 868 869 870

**系统能力**:SystemCapability.Test.UiTest

**参数:**

871 872 873
| 参数名 | 类型 | 必填 | 说明                 |
| ------ | ---- | ---- | -------------------- |
| by     | By   | 是   | 目标控件的属性要求。 |
874 875 876

**返回值:**

877 878 879
| 类型                  | 说明                                  |
| --------------------- | ------------------------------------- |
| Promise\<UiComponent> | 以Promise形式返回找到的目标控件对象。 |
880 881 882

**示例:**

883
```js
884 885
async function demo() {
    let driver = UiDriver.create()
886
    let scrollBar = await driver.findComponent(BY.type('Scroll'))
887 888
    let button = await scrollBar.scrollSearch(BY.text('next page'))
}
889 890
```

891 892
### UiComponent.scrollToTop<sup>9+</sup>

893
scrollToTop(): Promise\<void>
894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910

在控件上滑动到顶部(适用于List等支持滑动的控件)。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let scrollBar = await driver.findComponent(BY.type('Scroll'))
    await scrollBar.scrollToTop()
}
```

### UiComponent.scrollToBottom<sup>9+</sup>

911
scrollToBottom(): Promise\<void>
912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928

在控件上滑动到底部(适用于List等支持滑动的控件)。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let scrollBar = await driver.findComponent(BY.type('Scroll'))
    await scrollBar.scrollToBottom()
}
```

### UiComponent.dragTo<sup>9+</sup>

929
dragTo(by:By): Promise\<void>
930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951

将控件拖拽至目标控件处。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

| 参数名 | 类型 | 必填 | 说明                 |
| ------ | ---- | ---- | -------------------- |
| by     | By   | 是   | 目标控件的属性要求。 |

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.type('button'))
    await button.dragTo(BY.text('hello world'))
    }
}
```

952 953 954 955 956 957 958
## UiDriver

UiDriver类为uitest测试框架的总入口,提供控件匹配/查找,按键注入,坐标点击/滑动,截图等API。
该类提供的方法除UiDriver.create()以外的所有方法都使用Promise方式作为异步方法,需使用await调用。

### UiDriver.create

959
static create(): UiDriver
960 961 962 963 964 965 966

静态方法,构造一个UiDriver对象,并返回该对象。

**系统能力**:SystemCapability.Test.UiTest

**返回值:**

967 968 969
| 类型    | 说明                     |
| ------- | ------------------------ |
| UiDrive | 返回构造的UiDriver对象。 |
970 971 972

**示例:**

973
```js
974 975 976
async function demo() {
    let driver = UiDriver.create()
}
977 978 979 980
```

### UiDriver.delayMs

981
delayMs(duration: number): Promise\<void>
982 983 984 985 986 987 988

UiDriver对象在给定的时间内延时。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

989 990 991
| 参数名   | 类型   | 必填 | 说明         |
| -------- | ------ | ---- | ------------ |
| duration | number | 是   | 给定的时间。 |
992 993 994

**示例:**

995
```js
996 997 998 999
async function demo() {
    let driver = UiDriver.create()
    await driver.delayMs(1000)
}
1000 1001 1002 1003
```

### UiDriver.findComponent

1004
findComponent(by: By): Promise\<UiComponent>
1005 1006 1007 1008 1009 1010 1011

在UiDriver对象中,根据给出的目标控件属性要求查找目标控件。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1012 1013 1014
| 参数名 | 类型 | 必填 | 说明                 |
| ------ | ---- | ---- | -------------------- |
| by     | By   | 是   | 目标控件的属性要求。 |
1015 1016 1017

**返回值:**

1018 1019 1020
| 类型                  | 说明                              |
| --------------------- | --------------------------------- |
| Promise\<UiComponent> | 以Promise形式返回找到的控件对象。 |
1021 1022 1023

**示例:**

1024
```js
1025 1026 1027 1028
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.findComponent(BY.text('next page'))
}
1029 1030 1031 1032
```

### UiDriver.findComponents

1033
findComponents(by: By): Promise\<Array\<UiComponent>>
1034 1035 1036 1037 1038 1039 1040

在UiDriver对象中,根据给出的目标控件属性要求查找出所有匹配控件,以列表保存。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1041 1042 1043
| 参数名 | 类型 | 必填 | 说明                 |
| ------ | ---- | ---- | -------------------- |
| by     | By   | 是   | 目标控件的属性要求。 |
1044 1045 1046

**返回值:**

1047 1048 1049
| 类型                          | 说明                                    |
| ----------------------------- | --------------------------------------- |
| Promise\<Array\<UiComponent>> | 以Promise形式返回找到的控件对象的列表。 |
1050 1051 1052

**示例:**

1053
```js
1054 1055 1056 1057
async function demo() {
    let driver = UiDriver.create()
    let buttonList = await driver.findComponents(BY.text('next page'))
}
1058 1059
```

1060 1061
### UiDriver.waitForComponent<sup>9+</sup>

1062
waitForComponent(by: By, time: number): Promise\<UiComponent>
1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076

在UiDriver对象中,在用户给定的时间内,持续查找满足控件属性要求的目标控件。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

| 参数名 | 类型   | 必填 | 说明                             |
| ------ | ------ | ---- | -------------------------------- |
| by     | By     | 是   | 目标控件的属性要求。             |
| time   | number | 是   | 查找目标控件的持续时间。单位ms。 |

**返回值:**

1077 1078 1079
| 类型                  | 说明                              |
| --------------------- | --------------------------------- |
| Promise\<UiComponent> | 以Promise形式返回找到的控件对象。 |
1080 1081 1082 1083 1084 1085 1086 1087 1088 1089

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    let button = await driver.waitForComponent(BY.text('next page'),500)
}
```

1090 1091
### UiDriver.assertComponentExist   

1092
assertComponentExist(by: By): Promise\<void>
1093 1094 1095 1096 1097 1098 1099

断言API,用于断言当前界面存在满足给出的目标控件属性的控件; 如果控件不存在,该API将抛出JS异常,使当前测试用例失败。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1100 1101 1102
| 参数名 | 类型 | 必填 | 说明                 |
| ------ | ---- | ---- | -------------------- |
| by     | By   | 是   | 目标控件的属性要求。 |
1103 1104 1105

**示例:**

1106
```js
1107 1108 1109 1110
async function demo() {
    let driver = UiDriver.create()
    await driver.assertComponentExist(BY.text('next page'))
}
1111 1112 1113 1114
```

### UiDriver.pressBack

1115
pressBack(): Promise\<void>
1116 1117 1118 1119 1120 1121 1122

UiDriver对象进行点击BACK键的操作。

**系统能力**:SystemCapability.Test.UiTest

**示例:**

1123
```js
1124 1125 1126 1127
async function demo() {
    let driver = UiDriver.create()
    await driver.pressBack()
}
1128 1129 1130 1131
```

### UiDriver.triggerKey

1132
triggerKey(keyCode: number): Promise\<void>
1133 1134 1135 1136 1137 1138 1139

UiDriver对象采取如下操作:通过key值找到对应键并点击。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1140 1141 1142
| 参数名  | 类型   | 必填 | 说明          |
| ------- | ------ | ---- | ------------- |
| keyCode | number | 是   | 指定的key值。 |
1143 1144 1145

**示例:**

1146
```js
1147 1148 1149 1150
async function demo() {
    let driver = UiDriver.create()
    await driver.triggerKey(123)
}
1151 1152 1153 1154
```

### UiDriver.click

1155
click(x: number, y: number): Promise\<void>
1156 1157 1158 1159 1160 1161 1162

UiDriver对象采取如下操作:在目标坐标点单击。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1163 1164 1165 1166
| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| x      | number | 是   | 以number的形式传入目标点的横坐标信息。 |
| y      | number | 是   | 以number的形式传入目标点的纵坐标信息。 |
1167 1168 1169

**示例:**

1170
```js
1171 1172 1173 1174
async function demo() {
    let driver = UiDriver.create()
    await driver.click(100,100)
}
1175 1176 1177 1178
```

### UiDriver.doubleClick

1179
doubleClick(x: number, y: number): Promise\<void>
1180 1181 1182 1183 1184 1185 1186

UiDriver对象采取如下操作:在目标坐标点双击。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1187 1188 1189 1190
| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| x      | number | 是   | 以number的形式传入目标点的横坐标信息。 |
| y      | number | 是   | 以number的形式传入目标点的纵坐标信息。 |
1191 1192 1193

**示例:**

1194
```js
1195 1196 1197 1198
async function demo() {
    let driver = UiDriver.create()
    await driver.doubleClick(100,100)
}
1199 1200 1201 1202
```

### UiDriver.longClick

1203
longClick(x: number, y: number): Promise\<void>
1204 1205 1206 1207 1208 1209 1210

UiDriver对象采取如下操作:在目标坐标点长按下鼠标左键。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1211 1212 1213 1214
| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| x      | number | 是   | 以number的形式传入目标点的横坐标信息。 |
| y      | number | 是   | 以number的形式传入目标点的纵坐标信息。 |
1215 1216 1217

**示例:**

1218
```js
1219 1220 1221 1222
async function demo() {
    let driver = UiDriver.create()
    await driver.longClick(100,100)
}
1223 1224 1225 1226
```

### UiDriver.swipe

1227
swipe(startx: number, starty: number, endx: number, endy: number): Promise\<void>
1228 1229 1230 1231 1232 1233 1234

UiDriver对象采取如下操作:从给出的起始坐标点滑向给出的目的坐标点。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1235 1236 1237 1238 1239 1240
| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| startx | number | 是   | 以number的形式传入起始点的横坐标信息。 |
| starty | number | 是   | 以number的形式传入起始点的纵坐标信息。 |
| endx   | number | 是   | 以number的形式传入目的点的横坐标信息。 |
| endy   | number | 是   | 以number的形式传入目的点的纵坐标信息。 |
1241 1242 1243

**示例:**

1244
```js
1245 1246 1247 1248
async function demo() {
    let driver = UiDriver.create()
    await driver.swipe(100,100,200,200)
}
1249 1250
```

1251 1252
### UiDriver.drag<sup>9+</sup>

1253
drag(startx: number, starty: number, endx: number, endy: number): Promise\<void>
1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276

UiDriver对象采取如下操作:从给出的起始坐标点拖拽至给出的目的坐标点。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| startx | number | 是   | 以number的形式传入起始点的横坐标信息。 |
| starty | number | 是   | 以number的形式传入起始点的纵坐标信息。 |
| endx   | number | 是   | 以number的形式传入目的点的横坐标信息。 |
| endy   | number | 是   | 以number的形式传入目的点的纵坐标信息。 |

**示例:**

```js
async function demo() {
    let driver = UiDriver.create()
    await driver.drag(100,100,200,200)
}
```

1277 1278
### UiDriver.screenCap

1279
screenCap(savePath: string): Promise\<bool>
1280 1281 1282 1283 1284 1285 1286

UiDriver对象采取如下操作:捕获当前屏幕,并保存为PNG格式的图片至给出的保存路径中。

**系统能力**:SystemCapability.Test.UiTest

**参数:**

1287 1288 1289
| 参数名   | 类型   | 必填 | 说明           |
| -------- | ------ | ---- | -------------- |
| savePath | string | 是   | 文件保存路径。 |
1290

1291 1292 1293 1294 1295 1296
**返回值:**

| 类型           | 说明                                   |
| -------------- | -------------------------------------- |
| Promise\<bool> | 截图操作是否成功完成。成功完成为true。 |

1297 1298
**示例:**

1299
```js
1300 1301 1302 1303
async function demo() {
    let driver = UiDriver.create()
    await driver.screenCap('/local/tmp/')
}
1304
```
1305

1306
## MatchPattern
1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319

控件属性支持的匹配模式。

**系统能力**:以下各项对应的系统能力均为SystemCapability.Test.UiTest

| 名称        | 值   | 说明           |
| ----------- | ---- | -------------- |
| EQUALS      | 0    | 等于给定值。   |
| CONTAINS    | 1    | 包含给定值。   |
| STARTS_WITH | 2    | 从给定值开始。 |
| ENDS_WITH   | 3    | 以给定值结束。 |

###