如何在屏幕中出现关注按钮后点击图片中的关注按钮

wpnprhlizu · 7 天前

回答

Hamibot AI · 7 天前

要在屏幕中出现“关注”按钮后点击该按钮,可以使用 Hamibot 提供的控件操作和图像匹配功能。以下是具体的实现步骤和代码示例:


方法一:通过控件操作点击“关注”按钮

如果“关注”按钮是一个可识别的控件(例如带有特定文本或属性),可以直接通过控件选择器进行操作。

实现步骤:

  1. 使用 textdesc 属性找到“关注”按钮。
  2. 判断是否找到该按钮,如果找到则点击。

示例代码:

// 确保无障碍服务已启用
auto.waitFor();

// 循环查找“关注”按钮
while (!click('关注')) {
    // 如果未找到,等待一段时间再重试
    sleep(500);
}

toastLog('已点击关注按钮');

说明:

  • click('关注') 会尝试点击屏幕上所有包含“关注”文本的控件。
  • 如果未找到,程序会每隔 500 毫秒重试一次,直到找到并点击为止。

方法二:通过图像匹配点击“关注”按钮

如果“关注”按钮无法通过控件属性直接定位(例如按钮没有明确的文本或描述),可以使用图像匹配的方法。

实现步骤:

  1. 截取当前屏幕作为大图。
  2. 准备一张包含“关注”按钮的小图(模板图片)。
  3. 使用 images.findImage 函数在大图中查找小图的位置。
  4. 如果找到位置,则模拟点击该位置。

示例代码:

// 确保无障碍服务已启用
auto.waitFor();

// 请求截图权限
if (!requestScreenCapture()) {
    toastLog('没有授予 Hamibot 屏幕截图权限');
    hamibot.exit();
}

// 加载模板图片(关注按钮)
var template = images.read('/sdcard/关注按钮模板.png');

// 循环查找并点击“关注”按钮
while (true) {
    // 截取屏幕
    var screen = captureScreen();

    // 在屏幕中查找模板图片
    var point = images.findImage(screen, template, { threshold: 0.9 });

    if (point) {
        // 找到后点击
        click(point.x, point.y);
        toastLog('已点击关注按钮');
        break;
    } else {
        // 未找到,等待一段时间再重试
        sleep(500);
    }
}

说明:

  1. 模板图片:需要提前截取一张包含“关注”按钮的图片,并保存为 /sdcard/关注按钮模板.png
  2. 相似度阈值threshold 参数控制匹配的精度,默认值为 0.9。可以根据实际需求调整。
  3. 点击位置point.xpoint.y 是找到的模板图片左上角的坐标。

方法三:结合控件和颜色判断

如果“关注”按钮的颜色比较独特,可以通过颜色检测来辅助判断。

实现步骤:

  1. 查找“关注”按钮的控件。
  2. 判断按钮中心点的颜色是否符合预期。
  3. 如果符合,则点击。

示例代码:

// 确保无障碍服务已启用
auto.waitFor();

// 循环查找“关注”按钮
while (true) {
    var btn = text('关注').findOne(1000); // 查找控件,超时时间为 1 秒

    if (btn) {
        // 获取按钮中心点坐标
        var x = btn.bounds().centerX();
        var y = btn.bounds().centerY();

        // 截取屏幕
        var screen = captureScreen();

        // 判断中心点颜色是否为特定颜色(例如橙色)
        if (images.detectsColor(screen, '#FFA500', x, y)) {
            // 点击按钮
            btn.click();
            toastLog('已点击关注按钮');
            break;
        }
    }

    // 未找到,等待一段时间再重试
    sleep(500);
}

说明:

  1. 颜色检测images.detectsColor 函数用于判断某个像素点是否为指定颜色。
  2. 颜色值#FFA500 是橙色的十六进制表示,可根据实际情况替换。

注意事项:

  1. 截图权限:如果使用图像匹配方法,需要确保授予了脚本截图权限。
  2. 模板图片质量:模板图片应尽量清晰,避免缩放或变形。
  3. 运行环境:确保手机系统版本符合要求(例如 Android 5.0 及以上)

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

0