Извлечение неконтролируемого дочернего элемента из элемента автоматизации

#c# #ui-automation #inspect #automationelement

#c# #пользовательский интерфейс-автоматизация #Осмотр #automationelement

Вопрос:

Используя inspect.exe инструмент, я вижу, что элемент автоматизации имеет 6 дочерних элементов, но у одного из них для isControlElement и isContentElement установлено значение false. Затем я использовал Windows automation в c #, чтобы попытаться восстановить дочерние элементы элемента автоматизации с помощью следующих строк:

  var cond = new PropertyCondition(AutomationElement.IsEnabledProperty, true);
 var children = addressParent.FindAll(TreeScope.Descendants, newCond);
  

Но я получаю все, кроме 1-го дочернего элемента, который является «не элементом управления».
Используемое условие является общим, поскольку у дочернего элемента, который я ищу, нет имени или идентификатора AutomationID (или какого-либо конкретного идентификатора).

Я также пытался использовать различные условия, основанные на отсутствующих дочерних характеристиках, таких как

LocalizedControlTypeProperty — «текст» или IsControlElementProperty — false или даже поиск всех потомков вместо дочерних элементов, но ни один из них не помог его найти.

Следует упомянуть, что в Inspect.exe братья и сестры связаны правильно, отсутствующий элемент управления next указывает на следующий из 6, а предыдущий элемент управления 2-го указывает на отсутствующий. Но в коде 2-й элемент из inspect является первым. Отсутствующий элемент управления не имеет дочерних элементов.