auto.js 中文文档 下载 App

相对位置与 bounds 选择器——父子兄弟关系定位

bounds(屏幕区域)

按控件在屏幕上的矩形位置匹配:

// 控件左上角在 (0, 1000) 到 (1080, 1500) 区域内
bounds(0, 1000, 1080, 1500).click();

参数是 left, top, right, bottom(像素坐标)。常用于 APP 界面上半部分和下半部分有相似按钮时的区分。

实用场景

// 只匹配屏幕底部区域的按钮(排除顶部导航栏里的同名按钮)
className("Button")
  .bounds(0, 1800, 1080, 2400)
  .click();

父子关系

找父控件

// 找到包含「购买」按钮的容器,再从容器里找价格文本
var container = text("购买").findOne().parent();
var price = container.findOne(id("price_tag"));

在某控件内找子控件

// 找到页面主容器后,只在它里面搜索,不找导航栏里的同名按钮
var mainContainer = id("main_content").findOne();
mainContainer.findOne(text("确定")).click();

depth(层级深度)

// 只匹配深度 ≤ 3 的控件(排除深层嵌套的)
text("签到").depth(3).click();

兄弟与索引

index(索引)

// 第二个 Button 控件(从 0 开始)
className("Button").index(1).click();

sibling 系列

var btn = text("购买").findOne();

// 找它前面的兄弟控件
var prev = btn.prev();

// 找它后面的兄弟控件
var next = btn.next();

// 它在兄弟中的位置
var pos = btn.indexInParent();

visible(可见性)

// 只匹配当前可见的控件
text("签到").visible(true).click();

某些控件虽然存在于控件树中但被设为 GONE 或 INVISIBLE,visible(true) 可以排除它们。

enabled / clickable

// 只匹配可点击、已启用的控件
text("确定")
  .clickable(true)
  .enabled(true)
  .click();

这样可以避开灰色的、不可操作的禁用按钮。

综合示例

// 淘宝:在商品卡片区域内,找到价格下方的「加入购物车」按钮
var price = id("com.taobao.taobao:id/tv_price").findOne();
var cartBtn = price.parent().findOne(textContains("加入购物车"));
cartBtn.click();