查找选项,右键单击c#White/TestStack UI Automation
本文关键字:TestStack UI Automation c#White 单击 选项 右键 查找 | 更新日期: 2023-09-27 18:28:56
我正在使用White''TestStack的C#框架语言创建软件流程自动化。
我遇到了一个问题,因为用鼠标右键单击时无法捕获选项。
图像预览
我用来尝试这个的代码
panel.RightClick();
var propClick = _mainWindow.Get<White.Core.UIItems.MenuItems.PopupMenu>(SearchCriteria.ByText("Propeties"));
propClick .Click();
无法捕获选项,使变量变为空propClick
对不起,我的英语糟透了:(
救命!
感谢:)
显然无法通过Get<T>
方法获取上下文菜单。我一直在研究这种方法,直到我找到了这篇文档:https://github.com/TestStack/White/blob/6c61106f2a62686636eb7cace0ee187a02db7295/docs/UIItems.md#menu-条形
所以在你的情况下应该是:
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();
相反?
或者你可以试试菜单而不是弹出菜单
var propClick = panel.Get<MenuItems.Menu>(SearchCriteria.ByText("Propeties"));
或者让white先为您决定,然后通过放置断点来读取类型
var propClick = panel.Get(SearchCriteria.ByText("Propeties"));
编辑:除此之外,以下方法可能有助于通过使用键盘命令来选择上下文菜单。
除此之外,您可能需要尝试用键盘选择菜单。White没有上下文菜单(鼠标右键菜单)的特殊键,但下面的方法可以帮助实现这一点。
/// <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();
}
}
据我所见,上下文菜单是单独的窗口,并没有名称,但这是特定于应用程序的