Я разбираюсь в автоматизации тестирования приложений в Linux (в частности, с использованием Ubuntu 20). Мне нужен доступ ко всем элементам запущенного приложения 'installer' (программа с gui автоматизирующая установку некоторых библиотек). Вот мой код:
import pyatspi
def print_accessible_tree(node, depth=0):
print(' ' * depth + str(node.name))
for child in node:
print_accessible_tree(child, depth + 1)
# Получаем ссылку на регистратор
registry = pyatspi.Registry()
# Получаем список всех приложений
desktop = registry.getDesktop(0)
for app in desktop:
if app.name == 'installer':
print_accessible_tree(app)
В этом случае выводится:
installer
Инсталлятор
В то же время, если я использую утилиту Accerciser и нажимаю на указанное приложение внутри Accerciser, то после выполнения моего кода результат уже будет таким:
installer
Инсталлятор
Инсталлятор
Версия инсталлятора:
v
0.4.1
Автоматическая установка
Диагностика
В первом случае, дочерние элементы элемента " Инсталлятор" являются None и получить их дочерний элемент я не могу, но после активации installer в программе Accerciser я получаю все элементы для вывода.
Вопрос в том, как я могу получить все элементы окна без использования Accerciser? Или, может быть, я могу "активировать" окно через Accerciser с помощью консольной команды, а затем получить список всех элементов
Я также пытался использовать его в начале своего кода
wmctrl -a "installer"
Но такая активация окна ни к чему не привела.