Получение/использование полного пути для поиска элементов управления в UIA и White

Я использую автоматизацию пользовательского интерфейса Microsoft + White framework. Можно ли получить полный путь от к элементу управления от верхнего родителя, а затем использовать его для поиска элемента? Например, использовать UI spy, чтобы получить полный путь, а потом каким-то образом получить управление по взятому пути?

Спасибо


person trickbz    schedule 20.11.2012    source источник


Ответы (2)


Я использую неуправляемую версию 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 — это вызов метода, который создает что-то вроде пути в строковой форме, которую я использую в своей автоматизации. Это очень похоже на XPath для MSUIA.

person chrismead    schedule 26.11.2012
comment
Я поддерживаю использование неуправляемой версии UIA. Уайт по-прежнему использует старую управляемую версию, которая лично мне показалась более медленной, менее стабильной и менее совместимой. - person Chaser324; 29.11.2012

В прошлом я делал что-то похожее на то, что вы пытаетесь сделать. К сожалению, не всегда все так просто сделать.

По сути, я создал свою собственную упрощенную версию UI Spy, в которой использовался некоторый код, аналогичный тому, что приведен в ответе @chrismead выше, для создания пути с разделителями «\» для идентификаторов автоматизации (к сожалению, как вы, возможно, уже обнаружили, AutomationID могут быть ненадежными, поэтому для надежности мне также пришлось добавить возможность идентифицировать элементы автоматизации по таким вещам, как имя, положение среди братьев и сестер или положение относительно родителя).

Затем у меня был код в другом приложении, которое могло использовать эти пути в качестве входных данных, чтобы найти эти конкретные элементы автоматизации и взаимодействовать с ними.

person Chaser324    schedule 27.11.2012