TestStack White:使用AutomationID

时间:2018-04-11 02:44:55

标签: wpf popup contextmenu ui-automation white

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

当我尝试使用其automationID获取创建组 MenuItem时,它会引发异常:

  

TestStack.White.AutomationException:无法获得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");

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

<小时/> 修改 这是contextmenu和menuitems的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>

1 个答案:

答案 0 :(得分:1)

我在SO上发现了这篇文章:Find option to right click c# White/TestStack UI Automation

你只能使用Window.Get<T>来获取ContextMenu,当我尝试获取ContextMenu弹出窗口时,我的方向正确,但我做错了。 (参见我试过的最后一种方法)。

SO链接帮助我找到解决方案:

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