回答
根据控件获取的bounds信息异常的情况,可能是以下原因导致:
- 控件层级问题
当通过text/desc等方法获取到的是父容器控件时,其bounds会覆盖整个屏幕区域。可通过boundsInParent()
获取相对父控件的位置验证:
var widget = text('目标文本').findOne();
log("绝对位置:" + widget.bounds());
log("相对父控件位置:" + widget.boundsInParent());
- 坐标系统异常
若脚本未设置屏幕参数适配,不同分辨率设备可能出现坐标偏差。建议添加:
// 设置设计时的分辨率
setScreenMetrics(1080, 1920);
- 控件加载时机问题
建议添加等待判断:
text('目标文本').waitFor();
var bounds = text('目标文本').findOne().bounds();
- 全屏控件判断
当获取到的是全屏布局容器时,可通过打印bounds具体值验证:
var b = text('目标文本').findOne().bounds();
log(`left:${b.left}, top:${b.top}, right:${b.right}, bottom:${b.bottom}`);
// 若right=1080且bottom=1920则为全屏控件
建议完整调试代码:
auto.waitFor();
setScreenMetrics(1080, 1920); // 按实际设计分辨率设置
text('目标文本').waitFor();
var widget = text('目标文本').findOne();
var b = widget.bounds();
log("控件类型:" + widget.className());
log("绝对位置:" + b);
log("相对父控件位置:" + widget.boundsInParent());
log("中心坐标:(${b.centerX()}, ${b.centerY()})");
ℹ️ 本回答由 AI 生成,内容仅供参考