查找控件 (Selector.find)
Selector.find
声明
node = node.selector():find()
返回值
| 类型 | 说明 |
|---|---|
| Node | 控件对象,未找到返回 nil |
说明
执行查找操作,返回第一个匹配的控件。
工作原理:
- 根据之前设置的所有约束条件,在当前界面的控件树中查找
- 返回第一个满足所有约束的控件
- 如果没有匹配的控件,返回 nil
查找顺序:
- 按控件树的深度优先顺序查找
- 通常是从屏幕左上角到右下角的顺序
- 第一个匹配的控件不一定是视觉上最靠前的
适用场景:
- 确定只有一个匹配控件时
- 只需要操作第一个匹配控件时
- 快速定位并操作单个控件
与 find_all() 的区别:
find()- 返回单个 Node 或 nil,性能更好find_all()- 返回 Node 数组或 nil,可获取所有匹配项
注意事项:
- 调用 find() 前必须设置至少一个约束条件
- 查找是瞬时的,不会等待控件出现
- 如需等待控件出现,请配合循环和延时使用
- 返回 nil 时应检查约束条件是否正确
待实现
该接口正在开发中。
示例
local node = require("node")
local n = node.selector():id("btn_login"):find()
if n then
n:click()
end
AScript 对应
# AScript (Python)
from ascript.android.node import Selector
node = Selector().id("btn_login").find()
if node:
node.click()