auto.js 中文文档 下载 App

文本与描述选择器——text 系列的五种匹配模式

五种文本匹配模式

text("签到");              // 精确匹配:控件 text 属性完全等于「签到」
textContains("签到");      // 包含匹配:text 包含「签到」子串
textStartsWith("签");      // 开头匹配:text 以「签」开头
textEndsWith("到");        // 结尾匹配:text 以「到」结尾
textMatches("签.{0,3}到"); // 正则匹配:text 符合正则表达式
// description 同理
desc("签到按钮");
descContains("签");
descStartsWith("签到");
descMatches(".*签.*");

实战场景

精确匹配 → 点击确认按钮

// 最保险的方式
text("确定").click();
text("允许").click();
text("同意").click();

包含匹配 → 适应文案变化

// APP 可能改成「立即签到」「每日签到」「今日签到」
textContains("签到").click();

正则匹配 → 适配动态文案

// 价格显示是「¥99.00」「¥1,299」,可以统一匹配
textMatches("¥\\d[\\d,]*\\.?\\d*");

文本匹配的陷阱

1. 文案变动(最大问题)

APP 改版可能把「签到」改成「领金币」,所有精确匹配的脚本都会失效。建议:

2. 空格和换行

有些控件 text 末尾有不可见空格,或者中间有换行:

// 用正则清理
textMatches("签到\\s*"); // 允许末尾空白

3. 文本 vs description

某些 APP 把按钮文字放在 description 属性里而不是 text:

// 两个都试试
var btn = text("签到").findOne(1000) || desc("签到").findOne(1000);
if (btn) btn.click();

4. 多行文本

如果一个控件的 text 是多行的(比如产品卡片包含标题+副标题),textContains 仍能匹配,但 text 精确匹配会失败。