【问题标题】:CodedUI, SpecFlow: Trying to get the menu options from a buttonCodedUI,SpecFlow:尝试从按钮获取菜单选项
【发布时间】:2020-05-07 16:58:35
【问题描述】:

我的应用程序中有一个带有下拉菜单和 2 个选项/菜单项的按钮。我可以使用 codedUI 单击按钮,但无法单击按钮中的菜单项。遵循我为此目的编写的 C# 代码。

    WinButton _messageMenuItem = new WinButton(ToolBar);
   _messageMenuItem.SearchProperties.Add(WinButton.PropertyNames.Name, "Messages (4)");
   _messageMenuItem.WindowTitles.Any(s => regex.IsMatch(s));
   Click(_messageMenuItem);//**Works**
   WinWindow _messagesdropdown = new WinWindow(MessageMenuItem);
   _messagesdropdown.SearchProperties.Add(WinWindow.PropertyNames.Name, "Messages (4)DropDown"); //DropDown
   _messagesdropdown.WindowTitles.Any(s => regex.IsMatch(s));
   Click(_messagesdropdown);//**Doesnt work**
   UITestControlCollection AllMenuItems = _messageMenuItem.GetChildren();
   UITestControlCollection AllFirstMenuItems = _messagesdropdown.GetChildren();
   //Click(AllMenuItems[0]);//**Doesnt work**
   //Click(AllFirstMenuItems[0]);//**Doesnt work**
   WinMenuItem _textMessagesMenuItem = new WinMenuItem();
   _textMessagesMenuItem.SearchProperties.Add(WinMenuItem.PropertyNames.Name, "Text Messages (4)"); //Text
   _textMessagesMenuItem.WindowTitles.Any(s => regex.IsMatch(s));
   return _textMessagesMenuItem;

【问题讨论】:

  • 我已经有一段时间没有使用 CodedUI 测试了。我认为“名称”属性不正确。您需要在菜单项中搜索文本。 WinButton.PropertyNames.Text 存在吗?您的搜索条件应该是查看可见文本,而不是控件的名称。
  • 目前我找到了一种重新使用编码 UI 记录的方法。稍后我将不得不检查 WinButton.PropertyNames.Text。

标签: c# coded-ui-tests specflow


【解决方案1】:

我通过在编码 UI 中记录控件并使用为 WinMenu 项生成的类来修复它。所以点击按钮之前的代码保持不变。

WinButton _messageMenuItem = new WinButton(ToolBar);
_messageMenuItem.SearchProperties.Add(WinButton.PropertyNames.Name, "Messages (4)");
_messageMenuItem.WindowTitles.Any(s => regex.IsMatch(s));
Click(_messageMenuItem);//**Works**

但在此之后,从 UI 测试记录用于获取菜单项

public class UIItemWindow : WinWindow
        {
            //Use this button for UI Messages window
            public UIItemWindow()
            {
                #region Search Criteria
                this.SearchProperties.Add(WinWindow.PropertyNames.AccessibleName,"Messages (4)DropDown");
                this.SearchProperties.Add(new PropertyExpression(WinWindow.PropertyNames.ClassName, "WindowsForms10.Window", PropertyExpressionOperator.Contains));
                #endregion
            }

            #region Properties
            public WinMenuItem UITextMessages4MenuItem
            {
                get
                {
                    if ((this.mUITextMessages4MenuItem == null))
                    {
                        this.mUITextMessages4MenuItem = new WinMenuItem(this);
                        #region Search Criteria
                        this.mUITextMessages4MenuItem.SearchProperties.Add(WinMenuItem.PropertyNames.Name,"Text Messages (4)");
                        #endregion
                    }
                    return this.mUITextMessages4MenuItem;
                }
            }

点击动作如下进行

UIItemWindow testWindow = new UIItemWindow();
WinMenuItem _textMessagesMenuItem = testWindow.UITextMessages4MenuItem;
Mouse.click(_textMessagesMenuItem );//**Works**

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多