Закодированный пользовательский интерфейс для WinForms — найти главное окно программно

#winforms #coded-ui-tests

#winforms #закодированный пользовательский интерфейс-тесты

Вопрос:

Я работаю над проектом закодированного пользовательского интерфейса для приложения win forms. Я хотел бы получить главное окно тестируемого приложения программно.

То, что я пробовал, это:

 WinWindow mainWindow = new WinWindow();
mainWindow.TechnologyName = "MSAA";
main.Window.SearchProperties.Add(new PropertyExpression(WinWindow.PropertyNames.Name, "Soft under test", PropertyExpressionOperator.Contains));
mainWindow.SearchProperties.Add(new PropertyExpression(WinWindow.PropertyNames.ClassName, "WindowsForms10.Window", PropertyExpressionOperator.Contains));
mainWindow.SearchConfigurations.Remove(SearchConfiguration.VisibleOnly);
mainWindow.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
  

Это не удается с:

При воспроизведении не удалось найти элемент управления с заданными свойствами поиска. Дополнительные сведения: Название технологии: ‘MSAA’ Имя: ‘Тестируемый программный продукт’ Имя класса: ‘WindowsForms10.Window’ —> System.Runtime.Службы взаимодействия.Исключение COMException: ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента.

Каков правильный способ получить окно?

Комментарии:

1. Позвольте инструменту записи и генерации закодированного пользовательского интерфейса показать вам. Сделайте запись, возможно, в изолированный проект, а затем скопируйте полезные фрагменты.

2. Кроме того, с точки зрения производительности, попробуйте использовать наименьшее количество свойств поиска, чтобы найти искомый элемент управления. Coded ui test recorder позволяет это сделать.

Ответ №1:

Не уверен, что этот вопрос все еще актуален, но вот код, который я использую для получения окна:

 this.TechnologyName = "MSAA";
this.SearchProperties.Add(UITestControl.PropertyNames.Name, "MyProgram");
this.SearchProperties.Add(UITestControl.PropertyNames.ControlType, "Window");
this.SearchProperties.Add("ControlName", "TopScreen");
this.SearchConfigurations.Add(SearchConfiguration.ExpandWhileSearching);
  

Возможно, вам нужно ExpandWhileSearching свойство, чтобы оно находило экран.