Apps & sessions
Open, switch to and terminate apps, and query their state. Opening and switching both go through client.session, which also sets up the automation session.
client.session#
Open (or switch to) the app and set up an automation session for it. Usually called at the top of a script.
typescript
client.session(bundleId: string): Client;매개변수
| 이름 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
bundleId | string | 예 | — | The app's bundle ID, for example com.apple.Preferences (Settings). |
반환값
| 타입 | 설명 |
|---|---|
Client | A client bound to the new session. You rarely need it: keep using the global client, which follows the current session on its own. |
주의사항
- A locked device is unlocked first (only works without a passcode).
예제
javascript
client.session('com.apple.Preferences');
sleep(2);
clickElement('label', 'General', 5);client.appTerminate#
Terminate the app's process. To start every round from the app's initial state, terminate it and then open it with client.session.
typescript
client.appTerminate(bundleId: string): object;매개변수
| 이름 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
bundleId | string | 예 | — | The app's bundle ID, for example com.apple.Preferences (Settings). |
반환값
| 타입 | 설명 |
|---|---|
object | The raw WDA response; rarely needed. |
예제
javascript
client.appTerminate('com.zhiliaoapp.musically');
sleep(randomFloat(1, 2));
client.session('com.zhiliaoapp.musically');관련 항목 client.session
client.appState#
Query the app's run state.
typescript
client.appState(bundleId: string): { value: number };매개변수
| 이름 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
bundleId | string | 예 | — | The app's bundle ID, for example com.apple.Preferences (Settings). |
반환값
| 타입 | 설명 |
|---|---|
{ value: number } | value is the state: 1 not running, 2 suspended in the background, 3 running in the background, 4 in the foreground. |
예제
javascript
var state = client.appState('com.zhiliaoapp.musically');
if (state.value !== 4) {
client.session('com.zhiliaoapp.musically');
}관련 항목 client.appCurrent
client.appCurrent#
Information about the app in the foreground.
typescript
client.appCurrent(): { bundleId: string; name: string; pid: number };반환값
| 타입 | 설명 |
|---|---|
{ bundleId, name, pid } | The foreground app's bundle ID, name and process ID. |
예제
javascript
var app = client.appCurrent();
logi(app.bundleId);관련 항목 client.appState
isAppInstalled#
Whether an app is installed on this device.
typescript
isAppInstalled(bundleId: string): boolean;매개변수
| 이름 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
bundleId | string | 예 | — | The app's bundle ID, for example com.apple.Preferences (Settings). |
반환값
| 타입 | 설명 |
|---|---|
boolean | True when installed (running or not), false when not. |
예외
| 예외 | 발생 조건 |
|---|---|
WDAErrorINVALID_ARGUMENT | bundleId is missing or not a string. |
주의사항
- If the check itself fails (for example the device's automation service does not answer) it throws instead of returning false, so the script does not take the wrong branch.
예제
javascript
if (!isAppInstalled('com.zhiliaoapp.musically')) {
loge('TikTok is not installed');
return false;
}
client.session('com.zhiliaoapp.musically');관련 항목 appList、client.appState
appList#
The apps running right now, in the foreground or background. This is not the list of installed apps; use isAppInstalled for that.
typescript
appList(): { pid: number; bundleId: string }[];반환값
| 타입 | 설명 |
|---|---|
{ pid, bundleId }[] | The process ID and bundle ID of each running app. |
예제
javascript
var apps = appList();
for (var i = 0; i < apps.length; i++) {
logi(apps[i].bundleId);
}