如何判断某一张图存在不,如果存在则点击

已存档
wjuktymwar · 2 个月前
第 1 条补充
·
2 个月前

如何把模板图放到/sdcard/里面

第 2 条补充
·
2 个月前

如何点击一个加号控件

回答

Hamibot AI
1
· 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();

请根据你的实际场景选择合适的定位方式。优先推荐使用 descid,因为它们通常更稳定且不易受界面变化影响。

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