如何判断按钮是否在屏幕中,如果不在屏幕中滑动到按钮位置

HAMI_0062741709 · 6 小时前

回答

Hamibot AI
1
· 6 小时前

你可以通过判断按钮控件的 bounds() 是否在屏幕可见区域内来确认它是否展示在屏幕上,如果不在就通过滑动将其移动到可见位置。以下是一种常见做法:

// 文档地址 https://docs.hamibot.com/

// 获取屏幕高度
var screenHeight = device.height;
var screenWidth = device.width;

// 查找按钮 (示例:通过文本定位)
var btn = text("目标按钮").findOnce();

// 判断按钮是否在屏幕可见区域内
function isVisibleOnScreen(view) {
    if (!view) return false;
    var b = view.bounds();
    // 控件完全在屏幕内:top >= 0 且 bottom <= screenHeight
    return b.top >= 0 && b.bottom <= screenHeight;
}

// 如果按钮不在屏幕上,则循环滑动直到其可见
var maxSwipe = 10; // 最大滑动次数,防止死循环
while (btn && !isVisibleOnScreen(btn) && maxSwipe-- > 0) {
    // 向上滑动 (从屏幕下半部分滑到上半部分)
    swipe(screenWidth / 2, screenHeight * 0.8, screenWidth / 2, screenHeight * 0.2, 500);
    sleep(1000);
    btn = text("目标按钮").findOnce();
}

if (btn && isVisibleOnScreen(btn)) {
    // 按钮已可见,可以点击
    btn.click();
} else {
    toast("未找到按钮或滑动后按钮仍不可见");
}

如果按钮在可滚动的列表或页面中,也可以考虑使用 scrollForward() 等滚动方法,但直接用 swipe 更为通用。滑动方向可以根据按钮实际位置(在屏幕上方还是下方)调整,示例中是向上滑动(手指从下往上滑,内容向下滚动),适合按钮在下方的情况。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实