Информация об изменениях

Сообщение Тестирование WPF через UIAtomation от 20.12.2022 3:52

Изменено 21.12.2022 1:23 Разраб

Тестирование WPF через UIAtomation
Получаю ссылку на главное окно(из Process)
получаю
AutomationElement.FromHandle(windowHandle);

Пытаюсь найти нужный или все элементы через
root.FindAll(TreeScope.Subtree, System.Windows.Automation.Condition.TrueCondition);

почему-то получаю только элементы бокового меню.
Аналогичный результат получаю при помощи
TreeWalker.RawViewWalker

А вот по точке отлично отрабатывает.
 AutomationElement.FromPoint(new Point(267, 465));

Приложение на WPF(DX).
Собственно вопрос, как не зная координат, найти искомые элементы или хотя бы все элементы принадлежащие окну?
подозреваю что нужный мне элемент находится внутри ControlType Custom(50025)
т.к. его тоже не находит FindFirst от непосредственно содержащего его элемента ControlType Group(50026)

Парадокс в том, что в обратную сторону(к родителю) путь рисуется до самого главного окна.

Пока только одна идея: поделить окно на квадраты и случайным образом сканировать искомые элементы при помощи FromPoint.

итоги: при переборе окошка 700 на 700 с шагом 50 по икс, 25 по игрик элемент в середине окошка определяется примерно за 30-40 сек. плохо конечно, но зато наверняка.

Пока остается загадкой почему в обратку цепочка ребенок — родитель строится, а прямо нет. Пробовал FLaUInspect. Он видит ровно тоже что и я.
Тестирование WPF через UIAtomation
Получаю ссылку на главное окно(из Process)
получаю
AutomationElement.FromHandle(windowHandle);

Пытаюсь найти нужный или все элементы через
root.FindAll(TreeScope.Subtree, System.Windows.Automation.Condition.TrueCondition);

почему-то получаю только элементы бокового меню.
Аналогичный результат получаю при помощи
TreeWalker.RawViewWalker

А вот по точке отлично отрабатывает.
 AutomationElement.FromPoint(new Point(267, 465));

Приложение на WPF(DX).
Собственно вопрос, как не зная координат, найти искомые элементы или хотя бы все элементы принадлежащие окну?
подозреваю что нужный мне элемент находится внутри ControlType Custom(50025)
т.к. его тоже не находит FindFirst от непосредственно содержащего его элемента ControlType Group(50026)

Парадокс в том, что в обратную сторону(к родителю) путь рисуется до самого главного окна.

Пока только одна идея: поделить окно на квадраты и случайным образом сканировать искомые элементы при помощи FromPoint.

итоги: при переборе окошка 700 на 700 с шагом 50 по икс, 25 по игрик элемент в середине окошка определяется примерно за 30-40 сек. плохо конечно, но зато наверняка.

Пока остается загадкой почему в обратку цепочка ребенок — родитель строится, а прямо нет. Пробовал FLaUInspect. Он видит ровно тоже что и я.

На СО нашел что-то похожее, там решение было довольно странное — после подписания приложения обход дерева стал полным.
Еще(я проверить пока не могу — тестирую удаленно через тимку) заметили что на тачке с VS находились все элементы.