У меня есть вот такой маленький код, по которому получается XML дамп экрана устройства, и по нему находятся координаты объектов в приложении через ADB на андройд устройстве, код выдаёт то что не может найти объект, хотя он есть
const shell = require('shelljs'); // Библиотека для выполнения команд в командной строке
function tapObjectById(resourceId) {
// Получаем координаты объекта
const coordinates = getCoordinatesById(resourceId);
// Если координаты не найдены, выводим сообщение об ошибке и возвращаемся
if (!coordinates) {
console.error(`Объект с идентификатором ресурса ${resourceId} не найден.`);
return;
}
// Выполняем нажатие по координатам объекта с помощью adb shell
shell.exec(`adb shell input tap ${coordinates.x} ${coordinates.y}`);
}
function getCoordinatesById(resourceId) {
// Получаем XML-дамп экрана устройства
const xmlDump = shell.exec('adb shell uiautomator dump /dev/tty').toString();
// Ищем объект по идентификатору ресурса в XML-дампе
const nodeRegex = new RegExp(`resource-id="${resourceId}"[^>]*bounds="\\[([0-9]+),([0-9]+)`);
const nodeMatch = xmlDump.match(nodeRegex);
// Если объект не найден, возвращаем null
if (!nodeMatch) {
return null;
}
// Извлекаем координаты объекта из регулярного выражения
const x = parseInt(nodeMatch[1], 10);
const y = parseInt(nodeMatch[2], 10);
return { x, y };
}
// Пример использования функции
tapObjectById('net.typeblog.socks:id/switch_action_button');