回答
当找到的控件 clickable 为 false 时,说明该控件本身不可点击,但仍可能响应坐标点击。处理方法如下:
1. 使用坐标点击(推荐)
通过 bounds() 获取控件位置,直接点击中心点:
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮文字").findOne(5000);
if (btn) {
var b = btn.bounds();
click(b.centerX(), b.centerY());
}
⚠️ 若设备已 root,可改用
Tap(b.centerX(), b.centerY())提升兼容性。
2. 向上查找可点击的父容器
自定义控件常将点击事件绑定在父元素上:
var node = text("按钮文字").findOne(5000);
if (node) {
var parent = node.parent();
while (parent && !parent.clickable()) {
parent = parent.parent();
}
if (parent && parent.clickable()) {
parent.click();
} else {
// 回退到坐标点击
click(node.bounds().centerX(), node.bounds().centerY());
}
}
3. 验证是否真不可点
部分自定义控件(如 android.view.View)虽 clickable=false 但实际可点,必须用坐标点击。可通过 Hamibot「布局分析」工具确认:
- 若控件无
clickable=true的祖先节点 - 且手动点击有效
→ 则只能依赖坐标点击
4. 增加容错
坐标可能因分辨率变化偏移,建议加入随机扰动:
var b = btn.bounds();
var x = b.centerX() + random(-10, 10);
var y = b.centerY() + random(-10, 10);
click(x, y);
ℹ️ 内容由 AI 生成,可能不准确,请注意核实