Использование White / UIAutomation Как получить контекстное меню правой кнопкой мыши - PullRequest
4 голосов
/ 17 марта 2011

При использовании UIAutomation я не могу получить ссылку на контекстное меню, которое отображается при выполнении команды правой кнопкой мыши.

В следующем примере показан случай, когда я открылновое окно с (проводник окон внутри него), получило правильную ссылку из доступных DesktopWindows (обратите внимание, что я могу переместить его в порядке) и вызвало контекстное меню с помощью щелчка правой кнопкой мыши.

var windowName = "This is a WinForms window: {0}".format(3.randomLetters());
var topPanel = O2Gui.open<Panel>(windowName,600,200 );
var webBrowser = topPanel.add_WebBrowser_Control();

webBrowser.open("".o2Temp2Dir());
var guiAutomation = new API_GuiAutomation();
var window = guiAutomation.desktopWindow(windowName);
window.move(0,0);
window.mouse_MoveTo();
guiAutomation.mouse().rightClick(); 

window.infoTypeName();
return window.Popup;

//O2File:API_GuiAutomation.cs
//O2Ref:White.Core.dll 
//O2Ref:UIAutomationClient.dll

Я пытался использовать переменную window.Popup, чтобы получить всплывающее окно, но оно было нулевым (не то, что объект окна имеет тип White.Core.UIItems.WindowItems.WinFormWindow

Ответы [ 2 ]

1 голос
/ 24 мая 2012
static PopUpMenu GetCurrentPopUpMenu(){

    List<Window> windows = WindowFactory.Desktop.DesktopWindows();
    foreach(Window w in windows)
    {
        if(w.Name == "") return w.PopUp;
    }
    return null;
}
1 голос
/ 05 мая 2011

Похоже, вы ответили на свой вопрос здесь: http://white.codeplex.com/discussions/250129
;)

РЕДАКТИРОВАТЬ: я нашел способ сделать это:

public static PopUpMenu getContextMenu(this API_GuiAutomation guiAutomation)     
    {
        try
        {
            var emptyWindow = guiAutomation.desktopWindow("");
            return emptyWindow.Popup;
        }
        catch
        {
        }
        return null;
    }

, который затем может быть использован следующим образом:

    var contextMenu =  guiAutomation.getContextMenu();
    contextMenu.menu("Git Clone...").click();
...