簡體   English   中英

找到右鍵單擊c #White / TestStack UI Automation的選項

[英]Find option to right click c# White/TestStack UI Automation

我正在使用White \\ TestStack的C#框架語言創建軟件過程自動化。

我有一個問題,因為當我用鼠標右鍵單擊時我無法捕獲選項。

圖像預覽

我用來試試這個代碼

  panel.RightClick();    
  var propClick = _mainWindow.Get<White.Core.UIItems.MenuItems.PopupMenu>(SearchCriteria.ByText("Propeties"));
  propClick .Click();

無法捕獲選項,使變量變為null propClick

對不起我的英文糟透了:(

救命!

謝謝 :)

顯然你不能通過Get<T>方法獲得上下文菜單。 我一直在挖掘這種方法,直到我找到這篇文檔: https//github.com/TestStack/White/blob/6c61106f2a62686636eb7cace0ee187a02db7295/docs/UIItems.md#menu-bars

所以在你的情況下它應該是:

panel.RightClick();
var popup = _mainWindow.Popup;
var properties_item = popup.ItemBy(
  SearchCriteria.ByText( "Propeties" )
);
properties_item.Click();

我還建議為您希望自動化的每個控件使用自動化ID。

我還沒有嘗試過任何鼠標右鍵菜單。 菜單是否顯示在您的后面

panel.RightClick();

否則,不是面板的上下文菜單部分?

你嘗試過使用過嗎?

panel.RightClick();    
var propClick = panel.Get<MenuItems.PopupMenu>(SearchCriteria.ByText("Propeties"));
propClick.Click();

代替?

或者也許您可以嘗試使用Menu而不是PopupMenu

var propClick = panel.Get<MenuItems.Menu>(SearchCriteria.ByText("Propeties"));

或者讓白方先為你決定,並通過設置斷點來讀取類型

var propClick = panel.Get(SearchCriteria.ByText("Propeties"));

編輯:要添加到此,以下方法可能有助於使用鍵盤命令選擇上下文菜單。

要添加,您可能想嘗試使用鍵盤選擇菜單。 白色沒有上下文菜單(鼠標右鍵菜單)的特殊鍵,但下面的方法可以幫助解決這個問題。

    /// <summary>
    /// Right mouse click simulation (SHIFT+F10)
    /// </summary>
    /// <param name="container">Container in whish the click should occur.</param>
    private static void ShowContextMenu(this UIItemContainer container)
    {
        container.Keyboard.HoldKey(KeyboardInput.SpecialKeys.SHIFT);
        container.Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.F10);
        container.Keyboard.LeaveKey(KeyboardInput.SpecialKeys.SHIFT);
    }

這一個選擇上下文菜單

    /// <summary>
    /// Get the context menu (right mouse menu) of <paramref name="container"/> whre the current focus is.
    /// </summary>
    /// <param name="mainWindow">Main window of the application, because the context menu is always a child of the window.</param>
    /// <param name="container">Container on which the right click shoul occur.</param>
    /// <returns>Context menu</returns>
    internal static PopUpMenu GetContextMenuOf(this Window mainWindow, UIItemContainer container)
    {
        using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.PopupTimeout = 750))
        {
            container.ShowContextMenu();
            return mainWindow.Popup;
        }
    }
panel.RightClick();
Thread.Sleep(500);
var windows = application.GetWindows();
foreach (Window window in windows) {
    if (window.Name == "") {
        var propClick = window.Get<PopupMenu>(SearchCriteria.ByText("Propeties"));
        propClick.Click();
    }
}

從我所看到的上下文菜單是單獨的窗口沒有名稱,但這是應用程序特定的課程

暫無
暫無

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

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