Задать вопрос
@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"
Но такая активация окна ни к чему не привела.
  • Вопрос задан
  • 132 просмотра
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽