Utilities
Logging, waiting, time, random numbers, Base64 and HTTP requests. All three log levels are uploaded to the task log and show up in the console in real time.
機能概要
- ·Three log levels — logd / logi / loge; the console shows debug in grey and errors in red
- ·randomInt / randomFloat / randomChoice add randomness to waits, taps and wording
- ·httpGet / httpPost never throw on failure and always return { ok, status, text, json, headers, error }
logd#
A debug log line: the details you look at while troubleshooting. It is uploaded too and shows in grey in the log panel.
logd(message: any): void;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
message | any | はい | — | What to log. Objects are serialised to JSON; anything else is converted to a string. |
注意事項
- Keep it out of tight loops: the server keeps only the most recent part of each task's log, and noise pushes out what matters.
例
logd(client.windowSize());logi#
An info log line: which step the script reached and what it got.
logi(message: any): void;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
message | any | はい | — | What to log. Objects are serialised to JSON; anything else is converted to a string. |
例
logi('step 1 done');loge#
An error log line for failures. It is highlighted in red in the log panel.
loge(message: any): void;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
message | any | はい | — | What to log. Objects are serialised to JSON; anything else is converted to a string. |
例
loge('the login button never appeared');関連項目 logi
setClickLog#
Turn click logging on or off. clickElement / clickImage / clickText record taps and misses in the task log by default; turn it off in busy loops so the log stays readable.
setClickLog(on: boolean): boolean;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
on | boolean | はい | — | true to log, false to stay quiet. |
戻り値
| 型 | 説明 |
|---|---|
boolean | The previous setting. |
注意事項
- Only these three functions are affected. Coordinate taps such as client.click never log.
例
setClickLog(false);
for (var i = 0; i < 50; i++) {
clickElement('label', 'Next', 1);
}
setClickLog(true);sleep#
Wait for the given number of seconds. Returns immediately when the task is stopped.
sleep(seconds: number): void;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
seconds | number | はい | — | How many seconds to wait; fractions are allowed. |
例
sleep(1.5);関連項目 randomFloat、shouldStop
getNowTimestamp#
The current Unix timestamp in seconds (an integer).
getNowTimestamp(): number;戻り値
| 型 | 説明 |
|---|---|
number | The number of seconds since 1970-01-01 00:00:00 UTC. |
注意事項
- To measure elapsed time, store the timestamp at the start and subtract it later to get the seconds that passed. For milliseconds use Date.now().
例
var start = getNowTimestamp();
sleep(2);
logi(getNowTimestamp() - start);関連項目 getNowTime、sleep
getNowTime#
The current time as 2026-10-01 14:05:09, in the device's local time zone.
getNowTime(): string;戻り値
| 型 | 説明 |
|---|---|
string | "YYYY-MM-DD HH:MM:SS", with month, day, hour, minute and second zero-padded to two digits. |
注意事項
- For the date only take the first 10 characters: getNowTime().slice(0, 10); for hours and minutes only: getNowTime().slice(11, 16).
例
logi('started at ' + getNowTime());関連項目 getNowTimestamp
randomInt#
A random integer with both ends included: randomInt(1, 6) is a die roll.
randomInt(min: number, max: number): number;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
min | number | はい | — | The lower bound (inclusive). |
max | number | はい | — | The upper bound (inclusive). |
戻り値
| 型 | 説明 |
|---|---|
number | An integer in [min, max]. Swapped bounds are handled. |
例
var n = randomInt(1, 6);関連項目 randomFloat、randomChoice
randomFloat#
A random decimal with both ends included, kept to 1 decimal place by default: randomFloat(1.5, 3) may give 1.5, 2.3 or 3. For example, pause for a random while between rounds: sleep(randomFloat(1.5, 3)).
randomFloat(min: number, max: number, digits?: number): number;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
min | number | はい | — | The lower bound (inclusive). |
max | number | はい | — | The upper bound (inclusive). |
digits | number | いいえ | 1 | How many decimal places to keep; an integer from 0 to 10. |
戻り値
| 型 | 説明 |
|---|---|
number | A decimal in [min, max] with digits decimal places. Swapped bounds are handled. |
例外
| 例外 | 発生条件 |
|---|---|
WDAErrorINVALID_ARGUMENT | digits is not an integer from 0 to 10. |
注意事項
- When the range is too narrow to hold two different values at that precision, more places are kept automatically: at 1 decimal place randomFloat(0.45, 0.55) could only ever be 0.5, so it returns two-decimal values such as 0.47 or 0.52. The result always stays inside [min, max].
- For values that need to be fine-grained, such as screen-ratio coordinates, pass the precision: client.click(randomFloat(0.3, 0.7, 3), randomFloat(0.4, 0.6, 3)). At 1 decimal place the tap could only land on 0.3, 0.4 and so on.
例
sleep(randomFloat(1.5, 3));
var x = randomFloat(0.2, 0.8, 3);関連項目 randomInt、randomChoice、sleep
randomChoice#
Pick one item from an array at random, each with an equal chance.
randomChoice<T>(list: T[]): T | null;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
list | T[] | はい | — | The candidates. |
戻り値
| 型 | 説明 |
|---|---|
T | null | The chosen item, or null for an empty array. |
例外
| 例外 | 発生条件 |
|---|---|
WDAErrorINVALID_ARGUMENT | The argument is not an array — for example, the candidates were passed as separate arguments. |
例
var greeting = randomChoice(['Hello', 'Good morning', 'Hi']);
logi(greeting);関連項目 randomInt、randomFloat
base64Encode#
Encode text as Base64 using UTF-8, so non-ASCII text survives.
base64Encode(text: string): string;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
text | string | はい | — | The text. |
戻り値
| 型 | 説明 |
|---|---|
string | The Base64 string. |
例
var b64 = base64Encode('hello');関連項目 base64Decode
base64Decode#
Decode Base64 back to text (UTF-8).
base64Decode(base64: string): string;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
base64 | string | はい | — | The Base64 string. |
戻り値
| 型 | 説明 |
|---|---|
string | The decoded text. |
例
var text = base64Decode('aGVsbG8=');関連項目 base64Encode
httpGet#
Send a GET request.
httpGet(url: string, timeoutSec?: number, headers?: Record<string, string>): HttpResult;
type HttpResult = {
ok: boolean;
status: number;
text: string;
json: any;
headers: Record<string, string>;
error: string;
};パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
url | string | はい | — | The full address, starting with http:// or https://. Put query parameters in the address; non-ASCII text and spaces are encoded for you. |
timeoutSec | number | いいえ | 15 | The longest wait, in seconds. |
headers | Record<string, string> | いいえ | — | Request headers, for example { Authorization: 'Bearer xxx' }. |
戻り値
| 型 | 説明 |
|---|---|
HttpResult | { ok, status, text, json, headers, error }. ok means a 2xx status; status 0 means no response arrived (no network, timeout, task stopped) and error says why; json holds the parsed body when the response is JSON and null otherwise; header names are lowercase. Failures do not throw — check ok. |
例外
| 例外 | 発生条件 |
|---|---|
WDAErrorINVALID_ARGUMENT | The address does not start with http(s), the wait is not a number or exceeds 600, or the headers are not an object. |
例
var r = httpGet('https://api.example.com/items?page=1');
if (r.ok) {
logi(r.json.items.length);
} else {
loge(r.status + ' ' + r.error);
}関連項目 httpPost
httpPost#
Send a POST request. A string body is sent as-is ('a=1&b=2' goes out as a form, JSON text as JSON); an object is sent as JSON.
httpPost(url: string, body?: string | object, timeoutSec?: number, headers?: Record<string, string>): HttpResult;パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
url | string | はい | — | The full address, starting with http:// or https://. Put query parameters in the address; non-ASCII text and spaces are encoded for you. |
body | string | object | いいえ | — | The request body. A Content-Type header you set yourself is never overridden. |
timeoutSec | number | いいえ | 15 | The longest wait, in seconds. |
headers | Record<string, string> | いいえ | — | Request headers, for example { Authorization: 'Bearer xxx' }. |
戻り値
| 型 | 説明 |
|---|---|
HttpResult | { ok, status, text, json, headers, error }. ok means a 2xx status; status 0 means no response arrived (no network, timeout, task stopped) and error says why; json holds the parsed body when the response is JSON and null otherwise; header names are lowercase. Failures do not throw — check ok. |
例外
| 例外 | 発生条件 |
|---|---|
WDAErrorINVALID_ARGUMENT | The address does not start with http(s), the wait is not a number or exceeds 600, or the headers are not an object. |
注意事項
- Requests go to whatever address the script names; the script's author is responsible for where that data goes.
例
var r = httpPost('https://example.com/report', 'device=' + getDeviceId() + '&status=ok');
if (!r.ok) {
loge(r.status + ' ' + r.error);
}関連項目 httpGet