提问者:小点点

只有一个孩子发现一个窗口,虽然检查. exe显示所有的孩子


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

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

但是,当在窗口上使用下面的方法作为root时,只找到了突出显示为黄色的元素。我需要获取蓝色元素但一直无法获取。下面的解决方案基于这篇文章:

UIAutomation不会检索元素的子元素

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个答案

匿名用户

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