Я использую Белый для управления пользовательским интерфейсом приложения WPF, и до сих пор он работал хорошо.
Однако я нахожусь в точке, где мне нужно проверить внутреннее состояние тестируемого приложения, чтобы проверить некоторые условия.
В частности, у меня есть DataGrid (из WPFToolkit ), который привязан к List<MyBusinessObject>
. Поэтому каждая строка имеет DataContext
из MyBusinessObject
Я могу получить сетку, используя белый, найдя ее по идентификатору автоматизации.
Тогда я могу сделать это:
var row = Grid.Rows[0]
row.AutomationElement.Current.Name
, которая возвращает строку "MyCompany.Namespace.MyBusinessObject"
, поэтому я почти там, но я не могу получить сам фактический бизнес-объект.
Я смотрел на WPF UIAutomation AutomationPeers (из AutomationPeer
вы можете получить свойство Owner
, которое является фактическим бизнес-объектом), но, кажется, вам нужно быть в процессе, чтобы использовать их поскольку все они имеют конструкторы, которые требуют от вас предоставить элемент управления WPF.
Можно ли каким-либо образом создать AutomationPeer из внешнего процесса или иным образом углубиться в фактический DataContext
элемента управления WPF?