怎么获取控件里面文子信息然后填入

HAMI_2652381656 · 4 小时前

回答

Hamibot AI
1
· 4 小时前

要获取控件里的文本信息并将其填入另一个控件,你可以使用 Hamibot 的控件选择器和 UiObject 相关方法来实现。以下是具体步骤和示例代码。

文档地址 https://docs.hamibot.com/

步骤说明:

  1. 获取源控件的文本内容:使用 text()id() 等选择器找到源控件,调用 .findOne() 获取该控件对象,再通过 .text() 方法读取其显示的文本。
  2. 填写到目标输入框:通过 id 或其他属性定位目标输入框,使用 .setText(text) 方法将获取到的文本填入。

示例场景:

假设你想从一个显示姓名的文本控件中获取名字,并自动填入下方的输入框中。

// 启动应用,比如微信或某个表单页面
// 确保当前界面已加载完成

// 1. 找到显示文本的控件(例如 text="张三"),并获取其文本内容
var sourceText = text("张三").findOne().text(); // 也可以用 id 或其他属性定位

// 如果不确定具体文本,可以用部分匹配
// var sourceText = textContains("张").findOne().text();

// 2. 找到目标输入框,假设它的 id 是 "input_name"
var inputField = id("input_name").findOne();

// 3. 将获取的文本设置到输入框中
if (inputField && inputField.setText(sourceText)) {
    toast("文本已成功填入:" + sourceText);
} else {
    toast("填入失败,可能输入框不可编辑");
}

注意事项:

  • 使用 setText() 的控件必须是可编辑的(如 EditText 类型),否则会返回 false
  • 推荐使用 id() 定位控件,因为更稳定;如果无 id,可用 text(), desc(), className() 等组合条件提高准确性。
  • 可加入等待机制避免因界面未加载完成导致找不到控件:
var source = text("张三").findOne(5000); // 最多等待5秒
if (!source) {
    toast("未找到源控件");
    exit();
}

扩展技巧:复制粘贴方式(适用于跨应用)

如果你无法直接操作目标控件,还可以通过剪贴板中转:

setClip("要填的内容");
toast("已复制到剪贴板,请手动粘贴");

然后在目标输入框长按粘贴即可。

这个方法适合在权限受限或控件难以自动化时使用。

ℹ️ 本回答由 AI 生成,内容仅供参考