2011-03-17 348 views
4

当使用UIAutomation时,我似乎无法获得对右键单击命令执行时显示的上下文菜单的引用。使用白/ UIAutomation如何获得一个右键单击上下文菜单

以下示例显示了一个使用(其中的Windows资源管理器)打开新窗口,从可用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

回答

1

看起来你回答你自己的问题在这里: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(); 
+0

是的,我做到了,那工作:) – 2011-06-07 14:31:38

1
static PopUpMenu GetCurrentPopUpMenu(){ 

    List<Window> windows = WindowFactory.Desktop.DesktopWindows(); 
    foreach(Window w in windows) 
    { 
     if(w.Name == "") return w.PopUp; 
    } 
    return null; 
} 
相关问题