[英]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.