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();
}