1

我正在使用 Microsoft UI 自动化 + White 框架。是否可以从顶级父级获取到控件的完整路径,然后使用它来查找元素?例如,使用 UI spy 获取完整路径,然后以某种方式通过获取的路径获取控件?

谢谢

4

2 回答 2

0

我使用 MSUIA 的非托管版本并且不使用白色,但是这样的东西应该可以满足您的要求。传入一个元素。

        CUIAutomation auto = new CUIAutomation();

        var desktop = auto.GetRootElement();
        var walker = GetRawTreeWalker();
        while (true)
        {
            element = walker.GetParentElement(element);
            if (auto.CompareElements(desktop, element) == 1)
            {
                break;
            }
            winPath = AppendWinPathPart(winPath, element);
        }

AppendWinPathPart 是对一种方法的调用,该方法构建了我在自动化中使用的字符串形式的路径。它很像 MSUIA 的 XPath。

于 2012-11-26T20:04:31.227 回答
0

我过去做过一些类似于你正在尝试做的事情。不幸的是,这并不一定那么容易做到。

我基本上构建了自己的 UI Spy 简化版本,它使用了一些类似于上面@chrismead 答案中的代码来构建自动化 ID 的“\”分隔路径(不幸的是,正如您可能已经发现的那样,自动化 ID 可能不可靠,因此,为了稳健起见,我还必须添加通过名称、兄弟姐妹之间的位置或相对于父级的位置等来识别 AutomationElements 的功能)。

然后,我在另一个应用程序中有代码,可以将这些路径作为输入,以便定位那些特定的 AutomationElement 并与它们进行交互。

于 2012-11-27T22:25:16.160 回答