您好,我根据以下方式获取控件,获取到的centerX 和centerY, centerY为什么有时候会是0。我把所有的权限都赋予了
var btn = text("按钮1").findOne(1);
var x = btn.bounds().centerX();
var y = btn.bounds().centerY();
回答
这个问题通常有以下几种可能原因:
- 控件尚未完全加载:即使你设置了1ms的超时时间(
findOne(1)
),控件可能还没有完全渲染完成。建议增加等待时间或使用untilFind()
:
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮1").findOne(); // 去掉超时会一直等待
var bounds = btn.bounds();
var x = bounds.centerX();
var y = bounds.centerY();
hamibot.exit();
- 控件不可见:如果控件在屏幕不可见区域(如需要滚动的列表),bounds可能会返回无效值。可以尝试先滚动到控件可见:
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮1").findOne();
btn.scrollTo(); // 确保控件可见
var bounds = btn.bounds();
var x = bounds.centerX();
var y = bounds.centerY();
hamibot.exit();
- UI结构异常:某些特殊控件可能存在bounds计算问题,可以尝试获取父控件的bounds:
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮1").findOne();
var parentBounds = btn.parent().bounds();
var x = parentBounds.centerX();
var y = parentBounds.centerY();
hamibot.exit();
ℹ️ 本回答由 AI 生成,内容仅供参考