Автоматизация пользовательского интерфейса, управление лентами и автоматизация Anywhere 11 в WPF - PullRequest
1 голос
/ 14 мая 2019

Я создаю нового бота в Automation Anywhere 11 , и недавно я обнаружил сложную ситуацию, когда пытаюсь автоматизировать ленту Windows.

Если у меня только одна вкладка все работает, как и ожидалось, и я могу определить все кнопки внутри, но если у меня несколько вкладок, только последние элементы вкладки видны для опции Клонирование объектов , я добавил уникальные имена, AutomationIDи т.д. И ничего не получалось.Это предварительный просмотр вопроса:

preview

Это мой пример XAML код:

<UserControl x:Class="Example.RibbonMenu"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             xmlns:my="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon">
    <my:Ribbon x:Name="R1" AutomationProperties.AutomationId="R1ID">
        <my:RibbonTab Header="Tab 1" x:Name="Tab1" AutomationProperties.AutomationId="Tab1ID">
            <my:RibbonGroup x:Name="GB1" AutomationProperties.AutomationId="RG1ID">
                <my:RibbonButton Label="Button 1" x:Name="RB1" AutomationProperties.AutomationId="RB1ID" />
            </my:RibbonGroup>
        </my:RibbonTab>
        <my:RibbonTab Header="Tab 2" x:Name="Tab2" AutomationProperties.AutomationId="Tab2ID">
            <my:RibbonGroup x:Name="RG2" AutomationProperties.AutomationId="RG2ID">
                <my:RibbonButton Label="Button 2" x:Name="RB2" AutomationProperties.AutomationId="RB2ID" />
                <my:RibbonButton Label="Button 3" x:Name="RB3" AutomationProperties.AutomationId="RB3ID" />
            </my:RibbonGroup>
        </my:RibbonTab>
    </my:Ribbon>
</UserControl>

Кроме того, я прочитал несколько вариантов:

Но ничего, что я пробовал до сих пор, не работало до недавнего времени, я обнаружил, что проблема связана с последней вкладкой,Кроме того, как я уже говорил в разделе комментариев, я также попробовал Legacy Option и Управление элементами управления Windows .Вот некоторые предварительные просмотры:

Устаревшая опция включена:

preview2

Управление элементами управления Windows:

preview3

Кроме того, еще одно приложение в виде ленты, такое как Paint, где кнопки распознаются:

paint

Кроме того, я протестировал другой инструмент Microsoft: AccExplorer32.exe , который показывает точно такое же поведение, доказывая, что это не ограничение AA или UiPath, а что-то из кодированияперспектива, здесь у вас есть предварительный просмотр:

preview accexplorer

У кого-нибудь есть идеи, как это исправить?Или испытал нечто подобное?Спасибо за вашу помощь.

PS

  • Я не хотел бы получить ответ о Распознавание изображений или MetaBots ( частичное решение и весьма неплохо в случае AA ) в качестве опций, поскольку это проблема программирования, и мне интересно ее решить.

  • Я обнаружил вторую проблему, связанную с TabControl .Если по какой-либо причине, когда у вас только один TabItem активен и вы решили скрыть имя вкладки по эстетическим соображениям, я советую включить егодля роботов , поскольку, если вы его спрячете, робот не сможет найти какие-либо элементы внутри, и вам может потребоваться MetaBot, который не будет настолько надежным, как вы хотите.

Не работает:

tab not working

Вкладки не работают даже с MetaBots:

preview tab not working metabot

Работает:

preview tab working

  • Также мне удалось найтипример с оконными формами , Windows SDK и обычной лентой от MS, где она работает, как и ожидалось, с первого раза без каких-либо специальных настроек.

example window forms

1 Ответ

1 голос
/ 15 мая 2019

Это частичное решение, если мы не можем найти решение в WPF (я очень сомневаюсь, что это невозможно). Кто-то предложил мне использовать MetaBot , который способен экранировать все окно, и да, таким образом, вы можете идентифицировать все видимые элементы управления ( не во всех инструментах, т.е. , SAP без включенных сценариев SAP, невозможно ).

image1

Однако я бы не рекомендовал это, так как это не решит основных проблем или обеспечит стабильность в будущих изменениях или радикальные изменения с экрана или пользовательского интерфейса.

Кроме того, я могу предположить, основываясь на моем опыте, который будет менее эффективным, поскольку в «обычном процессе» вы получите доступ к конкретному AutomationID уникального элемента управления на основе клонирования объектов в то время как в MetaBot вы будете постоянно получать доступ к полноэкранному режиму, чтобы получить все элементы управления, а затем выбирать один за другим, используя созданную вами логику, и вам потребуется повторять одни и те же действия каждый раз для каждого экрана и следовать одинаковой схеме для каждого действия. Кроме того, почему я считаю, что он менее эффективен, вы можете спросить, потому что вы добавляете сложности в решение.

Если я найду лучший ответ или решение, я добавлю его, как только получу.

приписка

На данный момент это единственное решение, поскольку ни Microsoft (они пытались заставить меня замолчать, перенося мой вопрос в раздел Не по теме , и не ответили на мой комментарий чтобы переместить его обратно на правильный форум), ни АА (у меня были долгие переговоры с ними, и они не хотели брать на себя ответственность или поднять билет в MS за поддержкой) хочет помочь.

Важно выделить , что в этом нет необходимости надежное решение , поскольку в следующей версии Automation Anywhere v2019 это совершенно другой инструмент на основе различные технологии , которые могут не поддерживать все "в начале" и могут разрушить всех ваших роботов и могут привести к переписыванию ваших роботов с нуля (я говорил об этом, поскольку у них нет надлежащих инструментов миграции ).

...