@AlexMosk01

Как получить доступ ко всем элементам приложения с помощью pyatspi?

Я разбираюсь в автоматизации тестирования приложений в 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"
Но такая активация окна ни к чему не привела.
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы