繁体   English   中英

WPF 中的 UI 自动化、功能区控制和 Automation Anywhere 11

[英]UI Automation, Ribbon Control and Automation Anywhere 11 in WPF

我正在Automation Anywhere 11 中构建一个新机器人,最近我在尝试自动化 Windows 功能区时发现了一个棘手的情况。

如果我只有一个选项卡,一切都按预期工作,并且我可以识别里面的所有按钮,但是如果我有多个选项卡,则对象克隆选项只能看到最后一个选项卡元素,我添加了唯一的名称、AutomationID 等。什么都没有工作。 这是问题的预览:

预览

这是我的示例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 OptionManage Windows Controls 以下是一些预览:

启用旧版选项:

预览2

管理 Windows 控件:

预览3

此外,另一个像 Paint 这样的带状应用程序可以识别按钮:

画

另外,我测试了另一个 Microsoft 工具: AccExplorer32.exe ,它显示了完全相同的行为,证明这不是 AA 或 UiPath 的限制,而是从编码的角度来看,这里有一个预览:

预览accexplorer

有谁知道如何解决它? 或者经历过类似的事情? 谢谢你的帮助。

聚苯乙烯

  • 我不想要关于图像识别MetaBots部分解决方案,在 AA 的情况下非常好)作为选项的答案,因为这是一个编程问题,我有兴趣解决它。

  • 我发现了关于TabControl的第二个问题。 如果出于某种原因,当您只有一个TabItem处于活动状态时,并且出于美观原因决定隐藏选项卡名称,我的建议是为机器人启用它,因为如果您隐藏它,那么机器人将无法在其中找到任何元素,您可能需要一个 MetaBot ,这不会像您想要的那样可靠。

不工作:

标签不起作用

即使使用 MetaBots,这些选项卡也不起作用:

预览选项卡不工作 metabot

在职的:

预览选项卡工作

  • 此外,我还找到了一个示例,其中包含Window Forms 、Windows SDK 和 MS 的常规功能区,从第一次开始就按预期工作,无需任何特定调整。

窗体示例

如果我们在 WPF 中找不到解决方案,这是部分解决方案(我非常怀疑,不可能)。 有人建议我使用MetaBot ,它能够筛选整个窗口,是的,通过这种方式,您可以识别所有可见的控件(并非在所有工具中,即没有启用 SAP 脚本的 SAP,这是不可能的)。

图片1

但是,我不会推荐它,因为这不会解决主要问题,也不会为未来的更改或屏幕或 UI 的剧烈更改带来稳定性

此外,根据我的经验,我可以假设效率会降低,因为在“常规过程”中,您将在MetaBot 中访问基于对象克隆的唯一控件的特定 AutomationID ,您将不断地访问全屏以获取所有控件,然后使用您创建的逻辑一个一个选择,您需要每次对每个屏幕重复相同的操作,并为每个操作遵循相同的模式。 此外,为什么我认为它的效率较低,您可能会问,因为您增加了解决方案的复杂性。

如果我找到更好的答案或解决方案,我会尽快添加。

聚苯乙烯

它不适用于 A2019。 AA 取消了对 MetaBots 的支持,目前除了图像识别之外没有其他选择。

目前,这是唯一的解决方案,因为Microsoft (他们试图让我保持沉默,将我的问题移至Off-Topic部分并且没有回复我的评论以将其移回正确的论坛)和 AA(我渴望与他们交谈,他们不想承担任何责任或向 MS 提出支持请求)想要提供帮助。

重要的是要强调,它不是一个可靠的解决方案,因为在 Automation Anywhere v2019 的下一个版本中,它是一个完全不同的工具,基于不同的技术,可能“一开始”不支持所有内容,可能会崩溃所有机器人,并可能导致重新-从头开始编写您的机器人(我谈到了这一点,因为他们没有适当的迁移工具)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM