Total Control 新手入门 - 如何使用 FindNode(用SigmaTestApp演示)

SigmaTestApp 是一个演示应用程序,用于说明如何使用 Total Control 和 AAI。



第一步:准备工作

1. 打开 Total Control,连接一台设备。



2. 点击“脚本”进入脚本窗口

从桌面模式进入

从多控中心模式进入



3. 在脚本窗口中点击图标进入“UI 探测”

UI 探测是一个小工具,它可以获取节点信息和帮助您构建查询,非常适合学习查询语言学习。



4. 安装 SigmaTestApp

在 “UI 探测”中,点击“...”-“安装 SigmaTestApp”。

在弹出窗口中点击 “立即安装到主设备”。

* 请注意查看您的安卓设备,如果弹出“USB 安装提示”,请点击“继续安装”。




第二步:获取query

查询(query)是用来定位 UI元素的。整个屏幕由许多节点组成,执行查询(query)。可以找到满足条件的节点,用来获取节点信息,或者对节点进行操作。

参考文档: FindNode - Query



1. 通过“UI探测”获取 query

确认安卓设备上的 SigmaTestApp 已经打开,点击“UI 探测”窗口中“截屏”

截屏图片出现在“UI 探测”窗口中,屏幕上的 UI 元素用红色虚线标示。

点击截屏上的 “TIMEOUT”,右侧“动作”- “显示代码”框内红色标记的内容就是查询(query),通过它可以定位 “TIMEOUT” 按钮。



2. 通过“UI探测”自定义 query

在右侧的“元素信息”中,可以看到节点对应的信息

可以根据 text, description, class, resource 信息来自定义 query,以左侧的 “TIMEOUT” 按钮为例,通过不同信息来定位节点的 query 代码如下:

通过 text 定位:

T:TIMEOUT

通过 description 定位:

D:CHECKBOX

通过 resource 定位:

R:.btn_CHECKOX

通过 Class 定位:

C:.Button

也可以进行多重限制,例如,同时匹配 description 和 text 信息,中间使用 “&&” 隔开:
T:CHECKBOX&&R:.btn_CHECKBOX



3. 在“UI探测”中验证 query

如果不确定自定义 query 是否正确,可以将它拷贝到“查询”框内,然后回车或按下“执行”按钮。




第三步:对节点进行操作(actions)

通过 query 定位到节点后,可以进行多种操作,例如点击,获取边框或文本等等。

参考文档:FindNode - Actions



1. 示例 1:点击

点击操作的代码是:click,我们在刚才定位到的 “TIMEOUT” 节点上执行点击操作:

(1)可以使用命令助手快捷添加 action 代码,点击“显示代码”框内的“命令助手”,找到 “Actions” 下的 “click”

点击 “+” 图标,把 click 添加到代码中并执行。

在设备上可以看到点击 “TIMEOUT” 按钮后的屏幕

* 注:“UI 探测”中的截屏不会改变,您可以点击“返回”按钮,在设备上返回到刚才的屏幕。

(2)如果您熟悉了代码的编写,也可以在“脚本终端”上执行代码,更方便。

将以下代码拷贝到“脚本终端”,回车即可执行。

device.sendAai({action:"click",query:"T:TIMEOUT"})

* 注:device 为设备对象,在脚本终端中,device 默认赋值为主控设备对象,可以直接使用。



2. 示例 2:滚动屏幕查找节点并点击

在“SigmaTestApp” 中点击 “LIST”,可以看到很多子项,我们测试滚动屏幕查找位于列表末尾的 ”Carlo Cortez” 子项,并点击它。

支持滚动查找的方法很多,我们以 scrollIntoView 为例,代码:

device.sendAai({ actions:["scrollIntoView('T:Carlo Cortez','down')","click"]})



3. 示例 3:输入

返回到 “SigmaTestApp” 首页,在 “TIMEOUT” 按钮右侧输入框中输入数字 “1000”。

代码:

device.inputTextSync(0,”10000”)

* 参数 “0” 代表第 1 个输入框,参数 “10000” 是需要输入的数字

参考文档: JS API



4. 示例 4:等待某个 UI 元素出现

等待某个UI元素出现,通常可以通过循环语句实现,在AAI中只需要一条语句即可。

例如,点击刚才的 “TIMEOUT” 按钮,等待一段时间后,屏幕上会出现 “FINISH!!”,以下代码的作用是等待 “FINISH!!” 出现,最长等待 10 秒钟。

代码:

device.sendAai({action:"waitQuery('T:FINISH!!',10000)"})



5. 其他

更多其他操作,可以参考文档:(FindNode



第四步:更多 FindNode 案例

FindNode 案例