2016-02-12 10 views
1

Я автоматизирую устаревшее приложение WinForms, используя Teststack.White, и я столкнулся с проблемой. меню, которое показывает вверх после щелчка правой кнопкой мыши какой-то предмет, по какой-то причине , как представляется, за пределами главного окна приложения в иерархии пользовательского интерфейса:C# Teststack.White автоматизирует Winforms Menu (ControlType.Menu), который не является дочерним по отношению к главному окну

VisualUIVerify UI hierarchy

Каков наилучший способ приблизиться к автоматизации этого меню ? Наш тестовый интерфейс построен вокруг иерархии окон, и мы обращаемся к элементам, которые являются дочерними элементами основного окна приложения.

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

Есть ли лучший способ решить эту проблему в Teststack.White? Спасибо!

+0

Native всплывающее меню в процессе приложения, но это окно верхнего уровня подобно основная форма. Я бы рекомендовал искать его с условием process_id, чтобы не беспокоить другие процессы по соображениям производительности. Я не знаком с Уайтом, это просто идея. –

ответ

2

Вы можете найти меню правой кнопки мыши, если вы выполняете поиск под всеми окнами рабочего стола. Смотрите ниже код:

// Вызов функции GetCurrentPopUpMenu

 PopUpMenu pop = GetCurrentPopUpMenu(); 

     pop.Item("Add Child").Click(); 

// Функция GetCurrentPopUpMenu

PopUpMenu GetCurrentPopUpMenu() 
    { 
     List<Window> windows = WindowFactory.Desktop.DesktopWindows(); 
     foreach (Window w in windows) 
     { 
      if (w.Name == "") return w.Popup; 
     } 

     return null; 
    } 
+0

Спасибо за внимание. Я ожидал некоторого подхода, не обойдя окна верхнего уровня, однако, как я думаю об этом сейчас, это, вероятно, единственно возможное решение. –

 Смежные вопросы

  • Нет связанных вопросов^_^