【发布时间】: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>
另外,我已经阅读了多个选项:
XAML - Binding row and column index of cell to automation ID
Unable to generate Automation ID for WPF Controls, to be used by coded UI for automation testing
但到目前为止,我尝试过的所有方法都没有奏效,直到最近,我发现问题与最后一个选项卡有关。另外,正如我在 cmets 部分所说,我也尝试了 Legacy Option 和 Manage 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