脚本

Total Control 的最大优势之一是脚本功能。Total Control 提供丰富的 API 来控制一个或多个 Android 设备。它提供了 2 套 API:JavaScript 和 REST API。JavaScript 将在本地运行脚本,REST API 提供语言和主机的灵活性。您还可以使用 REST API 来控制多台运行“Total Control”应用程序的 PC。

JavaScript API

语言

Total Control 为 JavaScript 提供以下框架(ECMAScript 5 与选定的 ES6 功能)

  • Mozilla 的 Rhino 1.7.7 with Total Control 7(或更低版本)、Rhino 1.7.12 with Total Control 8 和 Rhino 1.7.14 with Total Control 9(更新 20)。 有关详细信息,请参阅 https://github.com/mozilla/rhino
  • RingoJS 2.0。

如果 Rhino + RingoJS 没有提供足够的功能,Rhino 的好处是能够直接调用 Java API(Total Control 8 使用 OpenJDK 15)。

Total Control 提供了许多类,几个例子:

  • 设备
  • 设备阵列
  • UiElement(总控8)
  • UiElementArray(总控8)
  • 通知
  • 键盘
  • Excel

Device 和 DeviceArray 类

当设备连接时(自动连接或按下“连接”按钮),从“设备”类创建一个设备对象,使用静态方法“searchObject”定位设备对象。对于多个设备对象,它提供“DeviceArray”类(Array 的子类)。DeviceArray 对象中的设备将同时执行相同的任务。

设备类提供了近 100 种方法和属性来操作设备。DeviceArray 类提供了大约 20 多种常用方法。有关所有方法,请参阅 {{JavaScript API 文档}}。您可以轻松扩展 Device 和 DeviceArray (请参阅扩展 Device 和 DeviceArray)。

使用“Device.searchObject()”定位创建的设备对象,设备对象格式为“device@<10 digits>”。

//Returnonedeviceobject
varmySamsung=Device.searchObject('Samsung-S9');
//Returnalldeviceobjects, DeviceArray
varallDevices=Device.searchObject(tcConst.DevAll);
//Returndeviceobjectsbelongtosamegroup, DeviceArray
varallGroupX=Device.searchObject(tcConst.DevGroup,'firstrow');
varallGroupY=Device.searchObject(tcConst.DevGroup,'secondrow');
//Combine2groupstoformalargergroup, DeviceArray
vargroupXY=allGroupX.concat(allGroupY);

由于 DeviceArray() 是 Array() 的子类,它继承了 Array 类的大部分方法,因为所有 TC 特定的方法都绑定到 DeviceArray,如果你有一个数组,请使用 "var ary = new DeviceArray().concat (ary)" 转换为 DeviceArray。

//Thiswillfailsincethereisno"click"methodinArray
vardevice=Device.getMain();
varary=[device];
ary.click(100,100);

//Thiswillwork
vardevice=Device.getMain();
varary=newDeviceArray(device);
ary.click(100,100);    // or ary.clickSync("OK");

几个例子:

//clicklocation100,200ondevice name "Samsung-S10".
vardevice=Device.searchObject('Samsung-S10');
if(device){
    device.click(100,200); 	// or device.clickSync("Start");
}
//clickinthemiddleofthescreenonallconnecteddevices.
vardevices=Device.searchObject(tcConst.DevAll);
if(devices){
	devices.click(0.5,0.5); 	// or device.clickSync("John");
}

目录和 Userlib.js

默认情况下,脚本目录位于\Users\<用户名>\Documents\Scripts 目录,您可以通过单击主窗口中的“脚本”来更改它,选择“脚本列表”,最上面一行可以更改 目录。

在其中,您可以创建一个名为“Userlib.js”的文件,该文件将始终在脚本执行之前加载,您可以包含常用函数、向现有类添加原型或引入第 3 方软件。

要调试“Userlib.js”,请使用“终端”,要重新加载“Userlib.js”,请单击终端窗口右下方的重新加载图标。

绝对与相对坐标

对于x、y坐标,TC提供“绝对”和“相对”坐标(系统设置显示坐标会同时显示两个坐标),绝对坐标从(0, 0)到(width – 1, height – 1),相对坐标为通常是从 (0, 0) 到 (0.9999, 0.9999) 的 4 个小数点。相对坐标乘以设备宽度和高度将得到绝对坐标。坐标并不理想,Professional 支持使用 UI 元素中的文本在运行时检索坐标的AAI 。