我在用着White http://white.codeplex.com/驱动 WPF 应用程序的 UI,到目前为止效果良好。
然而,我现在需要深入研究被测应用程序的内部状态以检查某些条件。
具体来说,我有一个 DataGrid(来自WPF工具包 http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117),它是数据绑定到List<MyBusinessObject>
。因此每一行都有一个DataContext
of a MyBusinessObject
我可以通过使用白色的自动化 ID 找到它来获取网格。
然后我可以这样做:
var row = Grid.Rows[0]
row.AutomationElement.Current.Name
返回字符串"MyCompany.Namespace.MyBusinessObject"
, 所以我almost在那里,但我实际上无法获得实际的业务对象本身。
我研究过 WPF UIAutomation AutomationPeers (来自AutomationPeer
,你可以得到Owner
属性,这是实际的业务对象),但似乎您需要在进程中才能使用它们,因为它们都有构造函数,需要您提供 WPF 控件。
有什么方法可以从外部流程构造 AutomationPeer,或者深入了解实际的情况DataContext
WPF 控件?
我认为你不能。使用 UI 自动化交换信息的唯一方法是通过预定义的提供程序,它们专注于 UI 及其显示的内容,而不是其背后的数据:您永远不会在应用程序和测试应用程序之间交换实际对象。
我认为使用 UIA 可以得到的最接近的结果是将 BusinessObject 或至少相关数据编码在字符串中,并使用 ValuePattern 检索该字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)