找到右键单击c #White / TestStack UI Automation的选项

我正在使用White \ TestStack的C#框架语言创建软件过程自动化。

我有一个问题,因为当我用鼠标右键单击时我无法捕获选项。

图像预览

我用来试试这个代码

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

无法捕获选项,使变量变为null propClick

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

救命!

谢谢 :)

显然你不能通过Get方法获得上下文菜单。 我一直在挖掘这种方法,直到我找到这篇文档: 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(SearchCriteria.ByText("Propeties")); propClick.Click(); 

代替?

或者也许您可以尝试使用Menu而不是PopupMenu

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

或者让白方先为你决定,并通过设置一个断点来读取类型

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

编辑:要添加到此,以下方法可能有助于使用键盘命令选择上下文菜单。

要添加,您可能想尝试使用键盘选择菜单。 白色没有上下文菜单(鼠标右键菜单)的特殊键,但下面的方法可以帮助解决这个问题。

  ///  /// Right mouse click simulation (SHIFT+F10) ///  /// Container in whish the click should occur. 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); } 

这一个选择上下文菜单

  ///  /// Get the context menu (right mouse menu) of  whre the current focus is. ///  /// Main window of the application, because the context menu is always a child of the window. /// Container on which the right click shoul occur. /// Context menu 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(SearchCriteria.ByText("Propeties")); propClick.Click(); } } 

从我所看到的上下文菜单是单独的窗口没有名称,但这是应用程序特定的课程