回答
在 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 生成,可能不准确,请注意核实