回答
文档地址 https://docs.hamibot.com/
要获取屏幕上的控件信息,你可以通过以下步骤:
1. 定位控件
使用选择器方法(如 text、id、className 等)找到目标控件:
// 通过文本查找
var widget = text('设置').findOne();
// 通过ID查找
var widget = id('action_log').findOne();
// 通过类名查找
var widget = className('android.widget.Button').findOne();
// 带超时时间的查找(6秒内找不到返回null)
var widget = text('确定').findOne(6000);
2. 获取控件信息
找到控件后,可以调用以下方法获取其属性:
// 获取控件类名
log('类名: ' + widget.className());
// 获取控件文本
log('文本: ' + widget.text());
// 获取控件ID
log('ID: ' + widget.id());
// 获取控件在屏幕上的坐标范围
var bounds = widget.bounds();
log('坐标范围: ' + bounds.toString());
log('中心点坐标: (' + bounds.centerX() + ', ' + bounds.centerY() + ')');
// 获取控件在父控件中的范围
log('父控件内范围: ' + widget.boundsInParent().toString());
// 获取父控件
var parent = widget.parent();
if (parent) {
log('父控件类名: ' + parent.className());
}
// 获取绘制顺序(Android 7.0+)
log('绘制顺序: ' + widget.drawingOrder());
3. 实用示例
以下是一个完整示例,查找"设置"按钮并显示其信息:
// 等待"设置"文本出现
var settingButton = text('设置').findOne(5000);
if (settingButton) {
log('=== 控件信息 ===');
log('类名: ' + settingButton.className());
log('文本: ' + settingButton.text());
log('ID: ' + settingButton.id());
var b = settingButton.bounds();
log('屏幕坐标: ' + b.toString());
log('中心点: (' + b.centerX() + ', ' + b.centerY() + ')');
// 点击该控件
settingButton.click();
// 或者通过坐标点击
// click(b.centerX(), b.centerY());
} else {
log('未找到"设置"按钮');
}
注意事项
findOne()会一直等待直到找到控件,可能导致脚本阻塞- 如需只搜索一次,可以使用
findOnce()方法 - 如果屏幕上有多个匹配控件,
findOne()会返回深度优先搜索找到的第一个 - 使用
exists()可以先检查控件是否存在:if (text('确认').exists()) { ... }
这些方法可以帮助你获取屏幕上任意控件的详细信息,用于后续的自动化操作。
ℹ️ 本回答由 AI 生成,内容仅供参考