2014-11-03 84 views
0

我正在使用White \ TestStack語言C#框架創建軟件過程自動化。查找選項右鍵單擊c#白/ TestStack UI自動化

我有一個問題,因爲我無法捕捉到的一個選項,當我用鼠標右鍵單擊。

圖像預覽

的代碼我使用嘗試這種

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

無法捕捉的選項,使得變量變爲空propClick

對不起我的英語很爛:(

幫助!

謝謝:)

+0

你確定它是'Propeties'而不是'Properties'嗎? – m3tikn0b 2015-11-22 19:01:01

回答

0

我還沒有用右鍵菜單嘗試過任何東西。請問菜單後顯示您的

panel.RightClick(); 

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

您是否嘗試過使用

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

呢?

或者,也許你可以嘗試菜單,而不是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; 
     } 
    } 
+0

要補充的是,你可能想嘗試用鍵盤選擇菜單。 – Rik 2015-02-19 10:00:55

0
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(); 
    } 
} 

從我所看到的上下文菜單是單獨的窗口中有沒有名字,但是這是專用ofcourse

2

顯然你不能通過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非常控制你希望自動化。