跳到主要内容

查找控件 (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()