【问题标题】:UI Automation, Ribbon Control and Automation Anywhere 11 in WPFWPF 中的 UI 自动化、功能区控制和 Automation Anywhere 11
【发布时间】:2019-10-01 09:10:23
【问题描述】:

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

如果我只有 一个选项卡,一切都会按预期工作,并且我可以识别里面的所有按钮,但如果我有多个选项卡,则 对象克隆 只能看到最后一个选项卡元素strong> 选项,我添加了唯一名称、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>

另外,我已经阅读了多个选项:

但到目前为止,我尝试过的所有方法都没有奏效,直到最近,我发现问题与最后一个选项卡有关。另外,正如我在 cmets 部分所说,我也尝试了 Legacy OptionManage Windows Controls。以下是一些预览:

已启用旧版选项:

管理 Windows 控件:

此外,另一个功能区应用程序,例如可以识别按钮的 Paint:

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

有人知道如何解决吗?或者经历过类似的事情?感谢您的帮助。

附言

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

  • 我发现了关于 TabControl 的第二个问题。如果出于任何原因,当您只有一个 TabItem 处于活动状态并且您出于美观原因决定隐藏 标签名称,我的建议是 为机器人启用它因为如果你把它隐藏起来,那么机器人在里面找不到任何元素,你可能需要一个 MetaBot,它不会像你想要的那样可靠。

不工作:

即使使用 MetaBots,这些选项卡也无法使用:

工作:

  • 此外,我还找到了一个示例,其中包含 Window Forms、Windows SDK 和 MS 的常规功能区,自第一次以来它在没有任何特定调整的情况下按预期工作。

【问题讨论】:

  • 您是否尝试在对象克隆命令中使用 legacy 选项?
  • @KhaledMostafaMe,是的,我什么也没做。
  • 尝试使用管理 Windows 控制命令。
  • @KhaledMostafaMe 同样的事情,我添加了两个预览和一个在它工作的地方画图。
  • 好的,我将尝试在 Visual Studio 上构建您的代码示例以执行一些测试。我这台机器上没有安装VS,所以今天晚些时候会

标签: wpf automation ui-automation ribbon automationanywhere


【解决方案1】:

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

但是,我不推荐它,因为这不会解决重大问题或带来稳定性,以应对未来的变化或屏幕或 UI 的剧烈变化。

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

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

附言

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

目前,这是唯一的解决方案,因为 Microsoft 都没有(他们试图让我保持沉默,将我的问题移到 Off-Topic 部分,但没有回复我的评论来移动它返回正确的论坛)或 AA(我与他们进行了长时间的交谈,他们不想承担任何责任或向 MS 提出支持请求)想要提供帮助。

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

【讨论】:

  • 太好了。我想测试,但直到现在我还无法访问 VS。让我们看看您是否可以上传示例进行测试。
  • 嗨@KhaledMostafaMe,你可以使用我分享的代码,它是一样的。
  • 您好,我现在要说的话非常愚蠢,但根据俗语“如果某事很愚蠢但有效,那它并不愚蠢”。在类似的情况下,我曾四处走动并插入击键以进入所需的选项卡、按钮。
  • 嗨@Piotr,我同意,但我仍然想要编程解决方案,因为这是一个编程站点,这只是我找到的替代方案。
猜你喜欢
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多