[英]How can I get a control's DataContext from an external application using UI Automation (and/or White)
我正在使用White来驱动WPF应用程序的UI,到目前为止它运行良好。
然而,我正处于这一点,我需要深入研究被测应用程序的内部状态以检查某些条件。
具体来说,我有一个DataGrid(来自WPFToolkit ),它被数据绑定到List<MyBusinessObject>
。 因此,每一行都有一个MyBusinessObject
的DataContext
通过使用它的自动化ID找到它,我可以使用白色网格。
我可以这样做:
var row = Grid.Rows[0]
row.AutomationElement.Current.Name
它返回字符串"MyCompany.Namespace.MyBusinessObject"
,所以我几乎就在那里,但我实际上无法获得实际的业务对象本身。
我查看了WPF UIAutomation AutomationPeers(来自AutomationPeer
,您可以获取Owner
属性,这是实际的业务对象),但似乎您需要在进程中使用这些,因为它们都有需要的构造函数你提供WPF控件。
有什么方法可以从外部进程构建AutomationPeer,或者深入研究WPF控件的实际DataContext
?
我不认为你可以。 使用UI自动化交换信息的唯一方法是通过预定义的提供程序,它们专注于UI及其显示的内容,而不是其背后的数据:您永远不会在应用程序和测试应用程序之间交换实际对象。
我认为使用UIA可以得到的最接近的是在字符串中对BusinessObject或至少相关数据进行编码,并使用ValuePattern检索该字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.