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