Pular para o conteúdo
CloudClick iOS

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.

typescript
client.source(format?: "xml" | "json", accessible?: boolean): string;

Parâmetros

NomeTipoObrigatórioPadrãoDescrição
format"xml" | "json"Não"xml"The output format.
accessiblebooleanNãofalsePass true to keep only the accessibility-visible nodes, which makes the tree much smaller.

Valor de retorno

TipoDescrição
stringThe element tree as text.

Exemplo

javascript
var xml = client.source();
logd(xml.substring(0, 500));

Veja também 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.

typescript
setSnapshotMaxDepth(depth?: number): number | null;

Parâmetros

NomeTipoObrigatórioPadrãoDescrição
depthnumberNão50The maximum depth.

Valor de retorno

TipoDescrição
number | nullThe previous depth, or null when it could not be read.

Observações

  • A depth of 0 means “root node only” in WDA, not “unlimited”. When restoring, skip values below 1.

Exemplo

javascript
var prev = setSnapshotMaxDepth(80);
var found = findElement('accessibilityId', 'deep_button');
if (prev >= 1) {
  setSnapshotMaxDepth(prev);
}

Veja também client.source

client.windowSize#

The screen size in points. The result is cached.

typescript
client.windowSize(): { width: number; height: number };

Valor de retorno

TipoDescrição
{ width, height }The screen width and height in points.

Exemplo

javascript
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.

typescript
client.screenshot(format?: "base64" | "bytes"): string | number[];

Parâmetros

NomeTipoObrigatórioPadrãoDescrição
format"base64" | "bytes"Não"base64"base64 returns the PNG as a base64 string; bytes returns a byte array.

Valor de retorno

TipoDescrição
string | number[]The PNG image data.

Exceções

ExceçãoLançada quando
WDAErrorformat is neither base64 nor bytes.

Exemplo

javascript
var png = client.screenshot();
savePicVideo(png, 'screen.png');

Veja também keepScreen、savePicVideo

client.openUrl#

Have the system open a URL or a custom scheme (such as an app deep link).

typescript
client.openUrl(targetUrl: string): object;

Parâmetros

NomeTipoObrigatórioPadrãoDescrição
targetUrlstringSim—The address to open.

Valor de retorno

TipoDescrição
objectThe raw WDA response; rarely needed.

Exemplo

javascript
client.openUrl('https://example.com');

client.setClipboard#

Write to the device clipboard; non-ASCII text is supported. Read it back with client.getClipboard().

typescript
client.setClipboard(content: string, contentType?: string): object;
client.getClipboard(): string;

Parâmetros

NomeTipoObrigatórioPadrãoDescrição
contentstringSim—The text to write.
contentTypestringNão"plaintext"The content type.

Valor de retorno

TipoDescrição
object | stringsetClipboard returns the raw WDA response; getClipboard returns the clipboard text.

Exceções

ExceçãoLançada quando
WDAErrorcontent is not a string.

Observações

  • 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.

Exemplo

javascript
client.setClipboard('要粘贴的文字 / text to paste');
var text = client.getClipboard();

Veja também client.sendKeys

client.alert#

Handle system alerts (permission prompts, confirmations): check for one, accept, dismiss, or list the buttons.

typescript
client.alert.exists(): boolean;
client.alert.accept(): object;
client.alert.dismiss(): object;
client.alert.buttons(): string[];

Valor de retorno

TipoDescrição
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.

Observações

  • To tap a specific button use client.alert.click('Button title'); client.alert.wait(seconds) waits for an alert to appear.

Exemplo

javascript
if (client.alert.exists()) {
  client.alert.accept();
}