2

我正在使用 UI 自动化框架,并且正在尝试使用 TreeWalker 解析我的 UI。(我也尝试过这里建议的解决方案,但没有太大帮助。)

我有一个窗格,其中包含一个子窗格和几个子按钮。他们都处于同一水平,所以我想我们可以称他们为兄弟姐妹。当我使用 TreeWalker 解析元素时,我只能“看到”窗格 - 而不是按钮 - 我实际上在之后。

令我烦恼的是,当我使用 UIA 验证并选择其中一个按钮时,它设法构建和绘制层次结构。然后,如果我通过上下文菜单选择“转到兄弟”,我可以轻松地在子窗格和其他子按钮之间跳转。

我已经尝试了 TreeWalker 的所有不同版本,例如 Control 和 Raw,但我最终得到了相同的结果 - 没有 - 它只看到子窗格。

有人可以给我一个关于 UIA 验证如何能够建立其层次结构并仍然显示(并设法在之间导航)所有组件的高级概述吗?为什么我不能在代码中复制它?

4

2 回答 2

2

我的猜测是您使用的是内置的托管 UIA 包装器。是这样吗?托管版本使用具有已知限制/问题的 UIA v2。UIA 验证直接通过 COM 使用 UIA v3。

要验证是否是这种情况,您可以尝试使用UISpy而不是 UIA 验证。它也使用旧的托管包装器,因此如果它与您的代码有相同的问题 - 这将是一种确认。

您可能希望使用UIAComWrapper而不是内置包装器,它提供相同的 API,但在底层使用 COM/UIA v3。

于 2014-05-03T05:50:11.057 回答
0

我不确定是什么问题,我没有你的应用程序,所以我可以测试它,但你是否尝试使用 AutomationElement.FindAll 函数?如果要检索元素的所有子元素,可以使用如下代码:

collection = parent.FindAll(TreeScope.Children, Condition.TrueCondition);

这将返回控制子级。您还可以尝试使用此工具测试您的应用程序,看看它是否找到了按钮。此工具是使用 .NET Framework 4.0 制作的。祝你好运!

于 2015-01-10T08:22:07.557 回答