Как получить необработанный элемент из AutomationElement - PullRequest
0 голосов
/ 24 мая 2019

Как я могу получить фактический элемент управления UWP от AutomationElement

Ниже API возвращает AutomationElement

parent.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, automationId));

Я хочу установить конкретный атрибут и соответствующее значение элемента. Например URL управления изображением.

Как я могу получить фактический элемент управления или его свойства? Спасибо

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Если это приложение WPF, вам необходимо выполнить следующие шаги, чтобы получить фактический контроль.

  1. Использовать UITestControlFactory.FromNativeElement (Automation, Element, TechnologyName.UIA.ToString ());преобразовать элемент автоматизации в UITestControl.Предыдущий код вернет экземпляр UITestControl.
  2. Пространство имен Microsoft.VisualStudio.TestTools.UITesting.WpfControls предоставляет множество классов элементов управления для создания экземпляра для доступа к его свойствам. Вам нужно только передать объект UITestControl в конструкторе.См. Ниже изображение

WPF controls

0 голосов
/ 24 мая 2019

Во-первых, вы должны убедиться, что значение automationId совпадает с вашим контролем изображения.Затем вы должны привести результат FindFirst в качестве ImageControl.

var imageControl = parent.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, automationId)) as ImageControl;

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

Например: Flaui имеет этот API:

var submitBtn= parent.FindFirstDescendant(cf => cf.ByName("SubmitBtn").And(cf.ByControlType(ControlType.Button)))?.AsButton();
...