TestStack White:无法使用 AutomationID 在 ContextMenu 中找到 MenuItem 对象

TestStack White: Cannot find MenuItem object within a ContextMenu using AutomationID

我正在使用 TestStack White UI 自动化 Windows WPF 聊天应用程序。我可以通过 AutomationID 搜索 Add 按钮,它会弹出一个带有两个 MenuItem 的 ContextMenu 到 select 以添加联系人或创建一个组。

当我尝试使用其 automationID 获取 Create group MenuItem 时,它抛出异常:

TestStack.White.AutomationException: Failed to get AutomationId = mitem_createGroup

这些是我尝试获取 MenuItem 但失败的方法:

mainWindow.Get(SearchCriteria.ByAutomationId("mitem_createGroup")).Click();

mainWindow.MenuBar.MenuItemBy(SearchCriteria.ByAutomationId("mitem_createGroup")).Click();

mainWindow.Get<MenuBar>(SearchCriteria.ByClassName("ContextMenu"));

var createGrpBtn = mainWindow.Get(SearchCriteria.ByText("Create group"));

mainWindow.PopupMenu("Create group");

我没有想法,需要帮助解决这个问题。


编辑: 这是上下文菜单和菜单项的 XAML。 ContextMenu 实际上是一个 ImageButton

<ContextMenu StaysOpen="False" FontSize="14" Style="{DynamicResource ContextMenuStyle}">
    <MenuItem Height="32" Header="{lex:Loc STRING_MAIN_WINDOW_ADD_CONTACT}" Name="mitem_addContact" Click="mitem_addContact_Click">
        <MenuItem.Icon>
            <Image Source="{svg:SvgImage /ChatApp;component/Images/add_contact.svg}"  />
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Height="32" Header="{lex:Loc STRING_MAIN_WINDOW_CREATE_GROUP}" Name="mitem_createGroup" Click="mitem_createGroup_Click">
        <MenuItem.Icon>
            <Image Source="{svg:SvgImage /ChatApp;component/Images/add_group.svg}" />
        </MenuItem.Icon>
    </MenuItem>
</ContextMenu>

我在 SO 上遇到了这个 post:Find option to right click c# White/TestStack UI Automation

您无法仅通过使用 Window.Get<T> 来获取上下文菜单,当我尝试获取上下文菜单弹出窗口时,我的方向是正确的,但我做错了。 (请参阅我尝试的最后一种方法)。

SO link 帮助我找到了解决方案:

PopUpMenu popup = mainWindow.Popup;
Menu createGroup_item = popup.ItemBy(
    SearchCriteria.ByAutomationId("mitem_createGroup")
);
createGroup_item.Click();