Найдите опцию, чтобы щелкнуть правой кнопкой мыши C# White/TestStack UI Automation

Я создаю программный процесс автоматизации с использованием языка C # framework by White \ TestStack.

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

Предварительный просмотр изображения

Код, который я использую, чтобы попробовать это

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

не могу захватить опцию, делая переменную становится нулевой propClick

Извините мой английский отстой:(

Помогите!

Спасибо:)

3 ответа

Видимо, вы не можете получить контекстное меню через 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();

Я бы также предложил использовать идентификатор автоматизации для управления, которое вы хотите автоматизировать.

Я ничего не пробовал с правым меню мыши. Отображается ли меню после вашего

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

Из того, что я видел, контекстные меню - это отдельное окно без имени, но это, разумеется, приложение.

Другие вопросы по тегам