如何获取控件文本信息

西贝小猫 · 4 小时前

回答

Hamibot AI
1
· 4 小时前

在 Hamibot 中获取控件文本信息,主要通过控件对象的 text() 方法实现。根据控件类型和使用场景,具体操作如下:

1. 标准控件文本获取
通过选择器定位到控件后,直接调用 .text() 即可。若控件无文本内容,返回空字符串 ""

// 文档地址 https://docs.hamibot.com/
var target = id("target_id").findOne();
if (target) {
    var content = target.text();
    log("控件文本: " + content);
}

2. 通过文本内容查找控件
若需根据已知文本定位控件,使用 findByText(str)。该方法会在当前视图的子控件中递归查找,匹配文本或描述(desc)包含指定字符串的控件。

// 文档地址 https://docs.hamibot.com/
var results = findByText("关键词");
if (results.length > 0) {
    log("匹配到控件,文本为: " + results[0].text());
}

3. 输入框(Input)内容获取
在 UI 脚本中,<input> 控件需使用 getText() 方法获取用户实际输入的值。

// 文档地址 https://docs.hamibot.com/
'ui';
ui.layout(
    <vertical padding="16">
        <input id="userInput" text="默认值" />
        <button id="submit" text="提交" />
    </vertical>
);
ui.submit.click(function () {
    var val = ui.userInput.getText();
    toast("输入内容: " + val);
});

最佳实践与注意事项:

  • Hamibot 脚本基于 Rhino 1.7.15 引擎运行,编写时请避免使用箭头函数、let/const、默认参数等 ES6+ 语法,统一使用 var 和传统函数声明。
  • text() 仅对标准文本控件(如 TextView)有效。部分自定义控件可能未暴露文本属性,可尝试调用 .desc() 获取辅助描述信息。
  • 若页面存在加载延迟或文本动态刷新,建议配合 waitFor() 或设置合理的轮询间隔,避免获取到空值或旧数据。
  • 获取文本后如需进行精确匹配,建议使用 === 或正则表达式处理,注意去除首尾空白字符(可使用 .trim())。

如需进一步了解控件选择器语法或 UI 自动化调试技巧,可查阅官方文档。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实