簡體   English   中英

CodedUI、SpecFlow:嘗試從按鈕獲取菜單選項

[英]CodedUI, SpecFlow: Trying to get the menu options from a button

我的應用程序中有一個帶有下拉菜單和 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;

我通過在編碼 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**

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM