虽然inspect.exe显示所有孩子,但只有一个孩子可以找到一个窗口

时间:2015-12-11 16:43:16

标签: c# ui-automation

我在使用C#UIAutomation查找Firefox的UI元素时遇到了麻烦。

在Inspect.exe中,一切看起来都很好:

inspect.exe

但是,当以root身份在窗口上使用以下方法时,只会找到以黄色突出显示的元素。我需要得到蓝色元素,但无法得到它。以下解决方案基于这篇文章:

UIAutomation won't retrieve children of an element

public static void WalkControlElements(AutomationElement rootElement)
    {
        if (rootElement == null) return;

        var children = new List<AutomationElement>();

        var currentChild = TreeWalker.RawViewWalker.GetFirstChild(rootElement);

        while (currentChild != null)
        {
            children.Add(currentChild);
            currentChild = TreeWalker.RawViewWalker.GetNextSibling(currentChild);
        }

        foreach (var child in children)
        {
            Console.WriteLine(child.ToString());
            WalkControlElements(child);
        }
    }

1 个答案:

答案 0 :(得分:0)

因为它们不是处理它们的窗口。它们是根窗口的元素。你必须处理元素(或项目)。