就是我写的页面有一个加号➕要点击一下才能加数量,有什么样的写法能够成功呢,最好不要固定坐标

HAMI_7785267079 · 4 小时前
第 1 条补充
·
3 小时前

就是图片中的加号有什么办法能获取到并点击他,给个例子,也可以利用傍边的数量来定位那个加号的位置,给个例子

回答

Hamibot AI
1
· 4 小时前

// 文档地址 https://docs.hamibot.com/
不要用固定坐标是最正确的选择,因为界面变化会导致坐标失效。Hamibot提供了基于UI元素的自动化方法,更适合这种场景。

有几种可靠的方式可以点击加号按钮:

方法1:通过文本内容查找

如果加号显示为"➕"符号:

// 查找包含加号符号的元素并点击
var addButton = text("➕").findOne(2000);
if (addButton) {
    addButton.click();
} else {
    console.error("未找到加号按钮");
}

方法2:通过ID查找(推荐)

如果知道加号按钮的ID(在开发者工具中可查看):

// 通过ID查找并点击
var addButton = id("add_button").findOne(2000); // 替换为实际ID
if (addButton) {
    addButton.click();
} else {
    console.error("未找到加号按钮");
}

方法3:通过控件类型查找

如果加号是一个按钮:

// 查找所有按钮中包含加号的
var buttons = className("Button").find();
for (var i = 0; i < buttons.length; i++) {
    if (buttons[i].text() && buttons[i].text().includes("➕")) {
        buttons[i].click();
        break;
    }
}

注意事项:

  1. findOne(2000)中的2000表示最多等待2秒,根据界面加载情况调整
  2. 点击后建议添加适当延时确保操作完成:
addButton.click();
sleep(500); // 等待500毫秒确保数量已增加
  1. 如果页面有多个加号,可能需要更精确的定位条件

这种方式比固定坐标可靠得多,即使界面布局变化,只要加号按钮的标识不变就能正常工作。如果遇到具体问题,可以提供更详细的界面信息,我可以给出更有针对性的解决方案。


补充回答 1

定位并点击界面加号按钮的方法

针对你的问题,我提供两种实用的方法来定位并点击界面中的加号按钮,特别是利用旁边的数量来精确定位。

方法一:利用旁边数量控件定位加号(推荐)

这种方法更稳定,不受分辨率影响:

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

// 尝试找到显示数量的控件(例如未读消息数)
// 假设数量控件的id是"badge"或"text"
var badge = id("badge").findOne(3000) || textMatches("\\d+").findOne(3000);

if (badge) {
    // 获取数量控件的位置
    var bounds = badge.bounds();
    var x = bounds.centerX();
    var y = bounds.centerY();
    
    // 计算加号位置(通常在数量左边50-80像素处)
    // 根据实际界面调整偏移量
    var plusX = x - 70;
    var plusY = y;
    
    // 点击计算出的位置
    click(plusX, plusY);
    toastLog("成功点击加号,位置: (" + plusX + ", " + plusY + ")");
} else {
    toastLog("未找到数量控件,尝试备用方案");
    
    // 备用:直接通过相对位置估算
    var plusX = device.width - 100;
    var plusY = 100;
    click(plusX, plusY);
    toastLog("通过估算位置点击加号");
}

方法二:图像识别定位加号(备用方案)

当无法通过控件定位时,可以使用图像识别:

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
    toastLog("请授予屏幕截图权限");
    hamibot.exit();
}
sleep(1000);

var img = captureScreen();

// 寻找加号的特征颜色(假设是蓝色)
var p = images.findMultiColors(
    img,
    '#0052CC',  // 主颜色
    [
        [5, 5, '#0052CC'],   // 相对位置偏移和颜色
        [10, 10, '#0052CC'], // 多点验证提高准确性
    ],
    {
        region: [device.width * 0.7, 0, device.width, device.height * 0.3], // 限定在右上区域搜索
        threshold: 4
    }
);

if (p) {
    toastLog("找到加号: " + p);
    click(p.x, p.y);
} else {
    toastLog("未找到加号,请检查界面或调整颜色参数");
}

实用提示

  1. 调整参数:实际使用时,需要根据你应用的具体界面调整颜色值和偏移量
  2. 多点验证findMultiColors中使用多点验证可以大大提高识别准确率
  3. 区域限定:通过region参数限制搜索区域可以加快识别速度
  4. 混合使用:推荐先尝试控件定位,失败后再用图像识别作为备用方案

如果加号旁边有明确的数量标识,第一种方法会更稳定可靠,因为它不受屏幕分辨率影响,而图像识别方法可能需要针对不同设备调整参数。

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