UiElementArray

aai~ UiElementArray

new UiElementArray()

Represents an array of UiElement objects, enabling batch operations across multiple devices or UI nodes.

UiElementArray extends the native Array object and supports concurrent execution of methods like:

  • clickSync(), longClickSync(), inputTextSync()
  • getText(), getDescription(), screenshot()

It is typically returned by UiElement.findObjects() or created manually to combine multiple elements.

All actions in the array are automatically threaded and synchronized using TCThreadVirtual, allowing scalable automation.

Typical Usage
var array = new UiElementArray();
array.add(obj1);
array.add(obj2);
array.inputTextSync(0, "Total Control");
array.screenshot();

UiElementArray[] is an array of UiElement objects.
By calling the method of UiElementArray, you can perform operations such as click/inputText in batches on multiple devices.

Note:Please refer to the documentation in this chapter for UI Explorer and UiElement object. (Total Control UI Explorer&UiElement.findObject)

Example
// Example: Use `inputTextSync()` on elements from device 1 and device 2
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
// Get the UiElement object from device 1
var device1 = Device.getMain();
var obj1 = UiElement.findObject(device1, "T:Text Message");

// Get the UiElement object from device 2
var device2 = Device.getMain();
var obj2 = UiElement.findObject(device2, "T:Ordinary Message");

// Create a UiElementArray and add both elements
var array = new UiElementArray();
array.add(obj1);
array.add(obj2);

// Call inputTextSync to input text into both elements (requires Sigma input method)
var ret = array.inputTextSync(0, "Total Control.");
if (ret == true) {
    print("inputText successfully.");
} else {
    print("Failed to inputText: " + lastError());
}

// Expected Output:
inputText successfully.

### Notes:
- The `inputTextSync(index, text)` function sends text to each `UiElement` in the array.
- The first parameter `index` can typically be set to `0` when broadcasting the same input to all elements.
- This operation **requires the Sigma input method to be enabled** on the target devices.

Members

add

Add UiElement object to the array

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);

click2Sync

similar to clickSync() except it will randomly click inside the bounds of the node.

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.click2Sync();

clickSync

Click in the middle of bounds on the specific component.

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.clickSync();

exists

Determine whether there is data in UiElementArray

Example
var { UiElementArray } = require("sigma/aai");
var array = new UiElementArray();
array.exists()

getDescription

Get the description in the UiElement object

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.getDescription();

getText

Get the text in the UiElement object

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.getText();

longClickSync

hold and click longer (500ms) to simulate a long click on the specific component.

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.longClickSync();

screenshot

Save the image on the node bounds to PC. (see devices.screenshot()).

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.screenshot();

screenshotToDevice

Save the image on the node bounds to device. (see devices.screenshotToDevice()).

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.screenshotToDevice();

setText

Modify the text in the UiElement object

Example
var { Device } = require("sigma/device");
var { UiElement, UiElementArray } = require("sigma/aai");
var sigmaDevice = Device.getMain();
var obj = UiElement.findObject(sigmaDevice,"T:Text Message");
var array = new UiElementArray();
array.add(obj);
array.setText(123);