Firefox терпит неудачу при обходе дерева, дальнейшее исследование показывает иерархию испорченных деревьев - PullRequest
0 голосов
/ 21 мая 2018

Я использую UIA для обхода дерева элементов Firefox.Я создаю пути между несколькими узлами в дереве.Это, однако, наталкивается на проблемы, потому что кажется, что в дереве смешаны элементы.То есть есть дублирующие идентификаторы времени выполнения, и иерархия все испорчена.

Приложение UI Spy показывает следующее исключение

"Навигация по дереву автоматизации пользовательского интерфейса нарушена. Родитель одного из потомков существует, но потомок не является потомком родителя"

Как мне решить эту проблему?Любая помощь приветствуется.

1 Ответ

0 голосов
/ 29 мая 2018

Я получил помощь от команды разработчиков Firefox, работающей над доступностью для решения этой проблемы, по крайней мере, в моих начальных тестах.

Оказывается, что Firefox изначально не поддерживает Microsoft UIA, но поддерживает Microsoft MSAA, котораястарая структура доступности.Таким образом, Firefox использует прокси-сервер MSAA для поддержки UIA, этот прокси-сервер использует информацию MSAA и предоставляет ее для запросов через API-интерфейс UIA.

Генерирование runtimeId (уникальный идентификатор для элементов) в MSAA и его совместимость с UIA через прокси-серверне очень хорошо задокументировано, насколько известно команде разработчиков Firefox.Это может вызвать вышеуказанную проблему при использовании UIA для обхода дерева.

Команда Firefox указала, что добавление логического предпочтения к about: config в Firefox обеспечит ограниченную и экспериментальную поддержку UIA и runtimeids.быть в этой ограниченной поддержке.

Я добавил это значение в about: config и смог получить положительные результаты в предварительных тестах, которые я выполнил

.

Чтобы добавить это значение в конфигурацию Firefox.

  1. Запустить экземпляр Firefox

  2. Введите «about: config» в адресную строку

  3. После отображения экрана конфигурации щелкните правой кнопкой мыши + New + Boolean.

  4. Addпредпочтение под названием «accessibility.uia.enable» и убедитесь, что значение «true»

...