如何判断某一张图存在不,如果存在则点击
第 1 条补充
· 2 个月前
如何把模板图放到/sdcard/里面
第 2 条补充
· 2 个月前
如何点击一个加号控件
回答
可以使用 images.findImage
方法来判断某张图是否存在。如果存在,就点击对应的位置。以下是一个示例脚本:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 读取屏幕截图和模板图片
var img = captureScreen();
var template = images.read("/sdcard/你的模板图片.png");
// 在截图中查找模板图片
var point = images.findImage(img, template);
if (point) {
// 如果找到图片,点击对应位置
click(point.x, point.y);
toastLog("图片找到并点击");
} else {
toastLog("未找到图片");
}
参数说明:
img
:大图(当前的屏幕截图)。template
:小图(需要查找的模板图片)。threshold
:图片相似度,默认为0.9
。region
:限定查找区域(可选)。
你可以根据需求调整参数,例如设置 threshold
来控制匹配的精度。
如果你希望在特定区域内查找图片,可以添加 region
参数:
var options = {
threshold: 0.9,
region: [x, y, width, height] // 限定查找区域
};
var point = images.findImage(img, template, options);
确保模板图片路径正确,并且图片清晰,以便提高匹配成功率。
补充回答 1
你可以通过以下几种方式把模板图放到 /sdcard/
目录中:
1. 手动复制图片
- 在电脑上将图片文件复制到手机的
sdcard
根目录。 - 例如,使用数据线连接手机和电脑,在电脑端找到手机存储设备,然后将图片粘贴到
sdcard
文件夹中。
2. 使用 Hamibot 脚本保存图片
如果你是从网络下载图片,可以用脚本直接保存到 /sdcard/
。以下是示例代码:
// 文档地址 https://docs.hamibot.com/
var url = "https://example.com/你的图片.png"; // 替换为图片链接
var res = http.get(url);
if (res.statusCode == 200) {
var img = images.fromBytes(res.body.bytes);
images.save(img, "/sdcard/模板图片.png");
toastLog("图片已保存");
} else {
toastLog("图片下载失败");
}
3. 使用文件管理器应用
- 在手机上打开文件管理器(如 ES 文件浏览器、Solid Explorer 等)。
- 将图片文件移动或复制到
/sdcard/
目录下。 - 确保文件名和路径正确,例如:
/sdcard/模板图片.png
。
4. 使用 Hamibot 的文件操作函数
如果你需要在脚本中复制图片,可以使用 files.copy
函数:
// 文档地址 https://docs.hamibot.com/
var fromPath = "/sdcard/Download/模板图片.png"; // 源文件路径
var toPath = "/sdcard/模板图片.png"; // 目标路径
if (files.copy(fromPath, toPath)) {
toastLog("图片复制成功");
} else {
toastLog("图片复制失败");
}
确保文件路径正确,并且目标文件夹有读写权限。这样你就可以将模板图放到 /sdcard/
中并用于脚本匹配了。
补充回答 2
要点击一个加号控件,可以通过控件的属性(如 desc
, text
, id
等)来定位它。如果加号控件有描述信息(例如 "加号"
或 "添加"
),推荐使用 desc
属性来查找。
以下是一些常见的点击加号控件的方法:
方法 1:通过 desc
描述点击加号控件
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 使用 desc 查找加号控件并点击
if (desc("添加").exists()) {
desc("添加").findOne().click();
} else {
toastLog("未找到加号控件");
}
方法 2:通过 text
文本点击加号控件
如果加号控件上有文本 "+"
if (text("+").exists()) {
text("+").findOne().click();
}
方法 3:通过控件 bounds 范围点击(不推荐,兼容性差)
如果你已经知道加号控件的具体位置,可以使用 bounds
定位:
var widget = bounds(951, 67, 1080, 196).findOne();
widget.click();
方法 4:通过控件 ID 点击
如果知道加号控件的唯一 ID,可以直接使用 id
来查找:
var widget = id("com.example.app:id/add_button").findOne();
widget.click();
方法 5:通过类名查找按钮控件
你可以结合类名和父控件来定位加号控件:
var widget = className("android.widget.Button").text("+").findOne();
widget.click();
请根据你的实际场景选择合适的定位方式。优先推荐使用 desc
或 id
,因为它们通常更稳定且不易受界面变化影响。
ℹ️ 本回答由 AI 生成,内容仅供参考