Невозможно выбрать значение в поле со списком в кодированном тесте пользовательского интерфейса с помощью построителя кодированного пользовательского интерфейса - PullRequest
0 голосов
/ 09 июня 2019

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

uIRadComboBoxComboBox.SelectedItem = this.SelectingWeddingParams.UIRadComboBoxComboBoxSelectedItem;

Я пытался использовать щелчки мышью и изменять координаты, но это также не работает.

Код функции:

объявления переменных региона

        WpfCustom uIItemCustom = this.UIIntelliClientWindow.UIItemCustom;
        WpfComboBox uIRadComboBoxComboBox = this.UIIntelliClientWindow.UIEventInfoRegionCustom1.UIPleasewaitProgressBar.UIRadComboBoxComboBox;
        #endregion


        // Click custom control
        Mouse.Click(uIItemCustom, new Point(448, 307));

        // Select 'Wedding' in 'RadComboBox' combo box
        uIRadComboBoxComboBox.SelectedItem = this.SelectingWeddingParams.UIRadComboBoxComboBoxSelectedItem;

Исключение вставлено ниже.

Результат StackTrace:
в Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.IScreenElement.FindAllDescendants (Строка bstrQueryId, Object & pvarResKeys, Int32 cResKeys, Int32 nMaxDepth) в Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.FindAllScreenElement (строковый queryId, глубина Int32, логический singleQueryId, логическое throwException, логическое resetSkipStep) в Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.FindScreenElement (String queryId, глубина Int32, логическое значение resetSkipStep) в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindFirstDescendant (String queryId, Int32 maxDepth, Int32 & timeLeft) --- Конец внутренней трассировки стека исключений --- в Microsoft.VisualStudio.TestTools.UITesting.Playback.MapControlNotFoundException (COMException ex, контекст IPlaybackContext) в Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowComException (COMException innerException, контекст IPlaybackContext) в Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException (Исключение исключения, контекст IPlaybackContext) в Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException (Исключение исключения, String queryId) в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindFirstDescendant (String queryId, Int32 maxDepth, Int32 & timeLeft) в Microsoft.VisualStudio.TestTools.UITesting.SearchHelper.GetElement (логическое значение useCache, ISearchArgument searchArg) в Microsoft.VisualStudio.TestTools.UITesting.SearchHelper.Search (ISearchArgument searchArg) в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindInternal () в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindControlIfNeeded () в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetPropertyPrivate (String propertyName, Object value) в Microsoft.VisualStudio.TestTools.UITesting.UITestControl. <> c__DisplayClass180_0.b__0 () в Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod [T] (функция Func`1, элемент управления UITestControl, логический firePlaybackErrorEvent, логический logAsAction) в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty (String propertyName, Object value) в Microsoft.VisualStudio.TestTools.UITesting.WpfControls.WpfComboBox.set_SelectedItem (строковое значение) в AddingEventUsingDataDrivenTesting.UIMap.SelectingWedding () в C: \ Users \ Dev2 \ source \ repos \ AddingEventUsingDataDrivenTesting \ AddingEventUsingDataDrivenTesting \ UIMap.Designer.cs: строка 166 в AddingEventUsingDataDrivenTesting.CodedUITest1.CodedUITestMethod1 () в C: \ Users \ Dev2 \ source \ repos \ AddingEventUsingDataDrivenTesting \ AddingEventUsingDataDrivenTesting \ CodedUITest1.cs: строка 30 Сообщение о результате: Метод тестирования AddingEventUsingDataDrivenTesting.CodedUITest1.CodedUITestMethod1 вызвал исключение: Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException: воспроизведению не удалось найти элемент управления с заданными свойствами поиска. Дополнительные детали: TechnologyName: «МАУ» FrameworkId: 'Wpf' ControlType: 'ComboBox' HelpText: 'RadComboBox' Экземпляр: '2'Возможно, поиск не удался в «TabList», так как в нем могли быть виртуальные дочерние элементы. Если искомый элемент управления является потомком TabList, то включение его в качестве родительского контейнера может решить проблему. ---> System.Runtime.InteropServices.COMException: ошибка HRESULT E_FAIL была возвращена после вызова компонента COM.

1 Ответ

0 голосов
/ 12 июня 2019

Я сталкиваюсь с той же проблемой, когда пытаюсь автоматизировать элементы управления wpf с помощью закодированного пользовательского интерфейса.Лучшее решение, которое я хотел бы предложить, - это использовать Appium WinAppDriver (если это возможно для вас), так как он поддерживает элементы управления wpf, как упоминалось моей командой Microsoft.

вот руководство к: Какиспользуйте WinAppDriver

CodedUI будет устаревшим после Visual Studio 2019 (упоминается одним из членов команды Microsoft в видео), хотя поддержка будет.

И для обходаЯ бы посоветовал вам использовать Keyboard.Sendkeys () для установки комбинированного списка.для примера: -

UITestControl combobox = new UITestControl(); 
//add properties of combobox

WinEdit textboxOfCombobox = new WinEdit(comboBox);

textboxOfCombobox.SendKeys("value to enter");
// Add code to verify if the combobox has the correct value selected.

Этот обходной путь я использую лично, и он работает для меня.Надеюсь, это поможет.

...