Невозможно найти элементы управления пользовательского интерфейса на странице в браузере MS Edge - PullRequest
0 голосов
/ 28 марта 2019

Работа над автоматизацией тестирования единого входа в систему для приложения клиента.Приложение открывает браузер по умолчанию (MS Edge) со страницей авторизации.

Я использую MS UI Automation, чтобы найти элементы управления и действовать.И я также использую инструмент «Проверка автоматизации пользовательского интерфейса» (VisualUIAVerifyNative) для проверки элементов управления.Инструмент отлично находит все, что мне нужно.Но я не могу найти те же элементы, используя код.

Я могу найти окно Edge и некоторые элементы управления до элемента управления с именем "m_webpageContent", который должен содержать саму страницу и элементы управления внутри нее.Но когда я пытаюсь найти элементы внутри него - я получаю нулевое значение.

var MainWindow = AutomationElement.RootElement.FindFirst(TreeScope.Descendants,
                    new AndCondition(
                        new PropertyCondition(AutomationElement.NameProperty, "Microsoft Edge"),
                        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window)));

            var TheLayout = MainWindow.FindFirst(TreeScope.Descendants,
                    new AndCondition(
                        new PropertyCondition(AutomationElement.AutomationIdProperty, "m_webpageContent"),
                        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Group)));

var w = TheLayout.FindAll(TreeScope.Descendants,
                new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); // 0 elements

w = TheLayout.FindAll(TreeScope.Descendants,
                new PropertyCondition(AutomationElement.FrameworkIdProperty, "MicrosoftEdge")); // 0 elements

Я также пытался использовать TreeWalker, чтобы пройти через дерево элементов управления, но это также не помогло ...

Что здесь не так?Что я могу сделать еще?

Спасибо!

1 Ответ

0 голосов
/ 29 марта 2019

Нашел решение. Инструмент, который я использовал для обнаружения элементов управления пользовательского интерфейса, использует UIAComWrapped.dll . Когда я ссылался на него в своем проекте автоматизации, он начал находить все элементы управления «MicrosoftEdge».

...