Screen & system
Read the current screen's element tree, size and screenshot, open links, write the clipboard, and handle system alerts.
client.source#
The current screen's element tree. Useful when working out a locator, but slow — keep it out of tight loops.
client.source(format?: "xml" | "json", accessible?: boolean): string;Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
format | "xml" | "json" | Нет | "xml" | The output format. |
accessible | boolean | Нет | false | Pass true to keep only the accessibility-visible nodes, which makes the tree much smaller. |
Возвращаемое значение
| Тип | Описание |
|---|---|
string | The element tree as text. |
Пример
var xml = client.source();
logd(xml.substring(0, 500));См. также setSnapshotMaxDepth
setSnapshotMaxDepth#
Set how deep the element tree is read (default 50). Deeper finds more deeply nested elements but is slower. Returns the previous depth so you can raise it temporarily and restore it afterwards.
setSnapshotMaxDepth(depth?: number): number | null;Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
depth | number | Нет | 50 | The maximum depth. |
Возвращаемое значение
| Тип | Описание |
|---|---|
number | null | The previous depth, or null when it could not be read. |
Примечания
- A depth of 0 means “root node only” in WDA, not “unlimited”. When restoring, skip values below 1.
Пример
var prev = setSnapshotMaxDepth(80);
var found = findElement('accessibilityId', 'deep_button');
if (prev >= 1) {
setSnapshotMaxDepth(prev);
}См. также client.source
client.windowSize#
The screen size in points. The result is cached.
client.windowSize(): { width: number; height: number };Возвращаемое значение
| Тип | Описание |
|---|---|
{ width, height } | The screen width and height in points. |
Пример
var size = client.windowSize();
client.click(size.width / 2, size.height - 80);client.screenshot#
Take a screenshot and get the image data. Colour, image and text lookups do not need this — call findColor / findImage / ocr directly.
client.screenshot(format?: "base64" | "bytes"): string | number[];Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
format | "base64" | "bytes" | Нет | "base64" | base64 returns the PNG as a base64 string; bytes returns a byte array. |
Возвращаемое значение
| Тип | Описание |
|---|---|
string | number[] | The PNG image data. |
Исключения
| Исключение | Когда возникает |
|---|---|
WDAError | format is neither base64 nor bytes. |
Пример
var png = client.screenshot();
savePicVideo(png, 'screen.png');См. также keepScreen、savePicVideo
client.openUrl#
Have the system open a URL or a custom scheme (such as an app deep link).
client.openUrl(targetUrl: string): object;Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
targetUrl | string | Да | — | The address to open. |
Возвращаемое значение
| Тип | Описание |
|---|---|
object | The raw WDA response; rarely needed. |
Пример
client.openUrl('https://example.com');client.setClipboard#
Write to the device clipboard; non-ASCII text is supported. Read it back with client.getClipboard().
client.setClipboard(content: string, contentType?: string): object;
client.getClipboard(): string;Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
content | string | Да | — | The text to write. |
contentType | string | Нет | "plaintext" | The content type. |
Возвращаемое значение
| Тип | Описание |
|---|---|
object | string | setClipboard returns the raw WDA response; getClipboard returns the clipboard text. |
Исключения
| Исключение | Когда возникает |
|---|---|
WDAError | content is not a string. |
Примечания
- iOS lets only the foreground app read the clipboard, so getClipboard brings WDA to the front through Siri, reads, and switches back — about 3 seconds in total.
Пример
client.setClipboard('要粘贴的文字 / text to paste');
var text = client.getClipboard();См. также client.sendKeys
client.alert#
Handle system alerts (permission prompts, confirmations): check for one, accept, dismiss, or list the buttons.
client.alert.exists(): boolean;
client.alert.accept(): object;
client.alert.dismiss(): object;
client.alert.buttons(): string[];Возвращаемое значение
| Тип | Описание |
|---|---|
boolean | object | string[] | exists is true when an alert is up; accept taps the last button (usually Allow or OK) and dismiss the first (usually Cancel or Don't Allow); buttons lists the button titles in order. |
Примечания
- To tap a specific button use client.alert.click('Button title'); client.alert.wait(seconds) waits for an alert to appear.
Пример
if (client.alert.exists()) {
client.alert.accept();
}