gpt4 book ai didi

wpf - 如何使用 UI Automation(和/或 White)从外部应用程序获取控件的 DataContext

转载 作者:行者123 更新时间:2023-12-05 01:30:00 27 4
gpt4 key购买 nike

我正在使用 White驱动 WPF 应用程序的 UI,到目前为止效果很好。

然而,我现在需要深入了解被测应用的内部状态以检查某些情况。

具体来说,我有一个 DataGrid(来自 WPFToolkit ),它数据绑定(bind)到 List<MyBusinessObject> .因此每一行都有一个 DataContextMyBusinessObject

我可以通过使用它的自动化 ID 找到它来获得使用白色的网格。

然后我可以这样做:

var row = Grid.Rows[0]
row.AutomationElement.Current.Name

返回字符串 "MyCompany.Namespace.MyBusinessObject" ,所以我差不多了,但实际上我无法获取实际的业务对象本身。

我查看了 WPF UIAutomation AutomationPeers(从 AutomationPeer 中,您可以获得 Owner 属性,这是实际的业务对象),但似乎您需要在进程中才能使用这些,因为它们都有构造函数,需要您提供 WPF 控件。

有什么方法可以从外部进程构建 AutomationPeer,或者深入了解实际的 DataContext WPF控件的?

最佳答案

我认为你做不到。您可以使用 UI Automation 交换信息的唯一方法是通过预定义的提供者,它们专注于 UI 及其显示的内容,而不是它背后的数据:您永远不会在您的应用程序和测试应用程序之间交换实际对象。

我认为使用 UIA 最接近的方法是将您的 BusinessObject 或至少相关数据编码为字符串,然后使用 ValuePattern 检索该字符串。

关于wpf - 如何使用 UI Automation(和/或 White)从外部应用程序获取控件的 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1309315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com