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();
我正在使用 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();