我正在使用White来驱动WPF应用程序的UI,并且目前运行良好。如何从使用UI自动化(和/或白色)的外部应用程序获取控件的DataContext
我在这一点上,但我需要捅入被测试的应用程序的内部状态来检查一些条件。
具体来说,我有一个DataGrid(从WPFToolkit),这是一个数据绑定到List<MyBusinessObject>
。因此,每一行都有一个DataContext
的MyBusinessObject
我可以通过使用白色找到它的自动化ID来获取网格。
然后我就可以做到这一点:
var row = Grid.Rows[0]
row.AutomationElement.Current.Name
它返回字符串"MyCompany.Namespace.MyBusinessObject"
,所以我几乎有,但我不能真正得到实际的业务对象本身。我已经看过WPF UIAutomation AutomationPeers(从AutomationPeer
,你可以得到Owner
财产,这是实际的业务对象),但似乎你需要在进程中使用这些,因为他们都有构造函数需要你提供WPF控件。
有没有什么办法可以从外部过程构建一个AutomationPeer,或者深入到WPF控件的实际DataContext
?