获取/使用完整路径在UI和白色中查找控件

时间:2012-11-20 19:16:21

标签: ui-automation white microsoft-ui-automation

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

由于

2 个答案:

答案 0 :(得分: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非常相似。

答案 1 :(得分:0)

我过去做过类似于你想要做的事情。不幸的是,它并不一定容易做到。

我基本上构建了自己的UI Spy简化版,它使用了类似于上面@chrismead的答案中的代码来构建自动化ID的'\'分隔路径(遗憾的是,正如您可能已经发现的那样,AutomationIDs可以是不可靠的,所以为了健壮,我还必须添加通过名称,兄弟姐妹之间的位置或相对于父母的位置来识别AutomationElements的能力。

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