如何使用 UI 自动化(和/或 White)从外部应用程序获取控件的 DataContext

2024-02-08

我在用着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,或者深入了解实际的情况DataContextWPF 控件?


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

我认为使用 UIA 可以得到的最接近的结果是将 BusinessObject 或至少相关数据编码在字符串中,并使用 ValuePattern 检索该字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 UI 自动化(和/或 White)从外部应用程序获取控件的 DataContext 的相关文章

随机推荐

  • Python 相同的字符不等于

    我的数据库中有文本 我从 xhr 发送一些文本到我的视图 函数 find 未找到某些 unicode 字符 我想使用以下方法查找选定的文本 text find selection 但有时变量 选择 包含这样的字符 in xhr unichr
  • FieldValue.arrayRemove() 根据属性值从对象数组中删除对象

    我有一个具有以下结构的文档 email email protected cdn cgi l email protection value 100 children email email protected cdn cgi l email
  • JavaScript 检查时间范围是否重叠

    我有例如一个包含 2 个对象的数组 myObject1 和 myObject2 等 现在 当我添加第三个对象时 我将检查时间范围是否重叠 实际上我不知道如何以高性能的方式做到这一点 var myObjectArray var myObjec
  • 用于本地(非远程)命令执行的 ssh 隧道

    我想创建一个 Linux shell bash 脚本 该脚本创建 SSH 隧道 运行使用该隧道的本地命令 最后关闭隧道和周围的 SSH 连接 为了使解释起来更容易 请考虑有一个名为 remoteserver 的主机的本地 SSH 配置 其中
  • 正确使用 stacktrace 进行调试

    以下代码行导致我出现异常 plug Instance AddDocuments new Int32 val pid val ptype val doccat val subcat val doctype val notes val summ
  • 删除 QML 网格的子项

    我想循环遍历 QML 网格的子级并使用 Javascript 销毁它们中的每一个 Grid id contentGrid spacing 10 ImageItem imageSource file foo jpeg destroy this
  • 如何将img放置在div的右下角

    替代文本 http img190 imageshack us img190 7514 unbenanntax jpg http img190 imageshack us img190 7514 unbenanntax jpg 这就是我想做的
  • 由于 mysql 错误,Magento 站点关闭 一般错误:1030 来自存储引擎的错误 -1

    我什至删除了 log visitor 表中的所有记录 但仍然遇到同样的问题 以下是我得到的堆栈 SQLSTATE HY000 一般错误 1030 来自存储引擎的错误 1 0 home site public html lib Varien
  • Rouge gem 最小示例不显示格式?

    我部分遵循了简单的说明A of this https stackoverflow com a 37721539 5783745回答 该代码可以在浏览器中看到 但其格式不符合预期 当我查看源代码时 我可以看到正在生成 css 类 但它似乎没有
  • Python html 解析确实有效

    我正在尝试用Python 解析一些html 以前有一些方法确实有效 但现在 如果没有解决方法 我实际上无法使用任何方法 SGMLParser 消失后 beautifulsoup 出现问题 html5lib 无法解析 外面 的一半内容 lxm
  • 使用 EncryptedSharedPreferences 获取 KeyStoreException 和 GeneralSecurityException,我该如何解决这些问题?

    背景 在我开发的一个应用程序中 我将重要的内容 令牌 存储到 EncryptedSharedPreferences 中 取自here https developer android com jetpack androidx releases
  • 最长的链对

    你被给予n数字对 在每一对中 第一个数字总是小于第二个数字 一双 c d 可以按照 a b 当且仅当b小于c 可以以这种方式形成成对的链 找到形成的最长链对 我在接受亚马逊采访时遇到了这个问题 但无法找出答案 只是它与信息系统问题 http
  • 异步执行 CUDA 内存副本和 cuFFT

    我有一个 CUDA 程序 用于计算 FFT 比如说大小50000 目前 我将整个数组复制到 GPU 并执行 cuFFT 现在 我正在尝试优化程序 NVIDIA Visual Profiler 告诉我通过并行计算的并发来隐藏内存副本 我的问题
  • 如何解决“方法‘’没有重载需要 0 个参数”?

    我该如何修复这个错误 方法 输出 没有重载需要 0 个参数 错误位于 fresh output 的最底部 我不知道我做错了什么 有人可以告诉我应该做什么来修复代码吗 这是我的代码 using System using System Coll
  • 在 R 中高效计算 3d 数组的行和

    考虑数组a gt a lt array c 1 9 1 9 c 3 3 2 gt a 1 1 2 3 1 1 4 7 2 2 5 8 3 3 6 9 2 1 2 3 1 1 4 7 2 2 5 8 3 3 6 9 我们如何有效地计算由第三维
  • JS 传单:如何将 (Geo-)json ID 传递给单击事件?

    我的 django Web 应用程序应该执行以下操作 将 Geojson 对象传递到视图 使用传单映射点 并在用户单击点标记时显示一些附加信息 我对 js 不太熟悉 所以我陷入了将正确类型的数据绑定到click事件 这是一个示例 geojs
  • PHP 与 Pylons 的基准测试

    我想对 PHP 与 Pylons 进行基准测试 我希望两者的比较尽可能均匀 所以这就是我的想法 PHP 5 1 6 with APC 使用 smarty 模板连接到 MySQL 数据库 Python 2 6 1 使用带有 mako 模板的
  • 有没有办法在 GHCI 中查看模块中的函数列表?

    我发现在 Python 或 Common Lisp 中 您可以在运行时列出库的内容 这很方便 Haskell 是否有同样的东西 特别是在 GHCI 提示符下 GHCi 有一个 browse列出模块内容的命令 Prelude gt brows
  • 如何使用 %edit magic 打印我定义的对象的源代码

    Ipython 0 13 1 可以从 python 库打印对象的源 例如 os path abspath 但我无法打印我在 ipython 中通过 ed magic 定义的任何对象的源代码 我做错了什么吗 例如 我通过 ed 魔法定义一个类
  • 如何使用 UI 自动化(和/或 White)从外部应用程序获取控件的 DataContext

    我在用着White http white codeplex com 驱动 WPF 应用程序的 UI 到目前为止效果良好 然而 我现在需要深入研究被测应用程序的内部状态以检查某些条件 具体来说 我有一个 DataGrid 来自WPF工具包 h