回答
在 Hamibot 中点击输入框、输入文本并执行搜索,通常需要组合使用控件操作函数。下面给出一个通用示例,兼容 Rhino 1.7.15 引擎:
// 文档地址 https://docs.hamibot.com/
// 1. 找到输入框并点击获得焦点
var inputField = text('搜索').findOne(); // 通过文本属性定位输入框,根据实际情况修改
if (inputField) {
inputField.click();
} else {
// 如果输入框本身没有文本,尝试用 id 或 className 定位
inputField = id('search_edit').findOne();
if (inputField) inputField.click();
}
// 2. 输入文本(两种方式任选其一)
// 方式一:使用 setText 直接替换输入框内容
setText("要搜索的关键词");
// 方式二:使用 input 追加内容
// input("要搜索的关键词");
// 3. 点击搜索按钮(通常通过文本属性定位)
var searchButton = text('搜索').findOne();
if (searchButton) {
searchButton.click();
}
关键点说明:
- 定位输入框:优先使用
text()或id()匹配控件,如果找不到会返回null,需要做判断。 - 输入文本:
setText(“关键词”)会直接替换输入框现有内容,而input(“关键词”)会在原有内容后追加,根据需求选择。 - 触发搜索:找到搜索按钮(通常文本就是“搜索”或放大镜图标),调用
click()即可。
如果你的输入框是通过 UiSelector 动态创建的,需要使用 ui.input.getText() 获取内容,但在自动化目标 App 时,上面的控件操作方法更通用。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实
可以使用 Hamibot 的 OCR 功能识别屏幕上的文字,找到包含特定关键词的文本,然后点击该文本所在的区域。下面给出一个兼容 Rhino 1.7.15 的示例:
// 文档地址 https://docs.hamibot.com/
// 请求屏幕截图权限
if (!requestScreenCapture()) {
toastLog('请授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
// 等待截图权限生效
sleep(1000);
// 截取当前屏幕
var img = captureScreen();
toastLog('正在识别屏幕文字...');
// 使用 OCR 识别文字,返回包含文字和位置信息的数组
var results = ocr.recognize(img);
// 要查找的关键词
var keyword = '确定'; // 替换为你要查找的文字
// 遍历识别结果,找到包含关键词的文本并点击
var clicked = false;
for (var i = 0; i < results.length; i++) {
var item = results[i];
// 检查识别出的文字中是否包含关键词
if (item.text && item.text.indexOf(keyword) !== -1) {
// 获取文字区域的边界
var bounds = item.bounds;
// 点击该区域(直接传入矩形边界)
click(bounds.left, bounds.top, bounds.bottom, bounds.right);
toastLog('已点击包含“' + keyword + '”的文字:' + item.text);
clicked = true;
break; // 如果只点击第一个,找到后跳出循环;若要点击全部,注释掉这一行
}
}
if (!clicked) {
toastLog('未找到包含“' + keyword + '”的文字');
}
关键点说明:
ocr.recognize(img)返回一个数组,每个元素包含text(识别出的文字)和bounds(边界矩形,有left,top,right,bottom属性)。- 使用
indexOf判断是否包含关键词,你也可以用其他字符串匹配方式。 click(left, top, bottom, right)可以直接点击对应矩形区域,比手动计算中心点再点击更方便。- 如果屏幕上有多处包含该关键词的文字,示例中点击第一个后跳出循环;如果需要点击所有匹配项,去掉
break即可。 - 确保已在 Hamibot 中授予无障碍权限和悬浮窗权限,否则截图可能失败。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实