Несовместимость AutomationId в UI Automation в разных версиях окон - PullRequest
0 голосов
/ 01 июля 2019

Я работаю над автоматизацией приложения с использованием инфраструктуры автоматизации пользовательского интерфейса (.net 4.6.1).

При проверке приложения с использованием Visual UI Automation Verify я могу видеть значение AutomationId свойств.

Я написал небольшой скрипт автоматизации на C # (wpf)

Когда я выполняю свой сценарий автоматизации в Windows 7, все работает нормально.

Когда я пробую это в windows 10, все значения AutomationId будут пустыми.

Пример кода:

AutomationElement.RootElement.FindFirst (
  TreeScope.Descendants, 
  new PropertyCondition(AutomationElement.AutomationIdProperty, myAutomationId)
);

Этот образец возвращает ноль, потому что он не может найти элемент со значением myAutomationId, когда я исследовал все дочерние элементы AutomationElement.RootElement, я обнаружил, что значения AutomationId пусты (в отличие от того, что я вижу в Visual UI Automation Verify, и в отличие от что я получаю при работе на windows 7)

Что-то мне не хватает в AutomationId свойствах? или о том, как UI Automation Framework работает на Windows 10?

Edit:

Я заметил, что когда я перебираю дочерние элементы, я обнаружил, что у некоторых из них есть AutomationId со значением NativeWindowHandle .. почему это ??

Редактировать 2:

Я пробовал очень широкий спектр библиотек автоматизации пользовательского интерфейса с несколькими версиями, ни одна из которых даже не смогла найти приложение на Windows 10.

То же самое относится к TestStack.White (также не работает на Windows 7).

1 Ответ

1 голос
/ 17 июля 2019

UIA, которая работает нормально, является UIAutomationClient.dll (+ UIAutomationTypes.dll, если необходимо)

Он использует интерфейсы автоматизации напрямую:

IUIAutomation uiautomation = new CUIAutomation();

и так далее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...