2015-12-07 1 views
2

Я тестирую приложение Windows Store с кодированным интерфейсом. В моем случае я должен открыть некоторые файлы через диалог с открытым файлом. Я создаю карты пользовательского интерфейса для главной страницы и для открытого окна. OpenWindowMap и Control was added normally Это нормально, пока моя программа не попытается найти элемент списка для выбора файла.Кодированное тестирование Ui. Не удается найти элементы списка в диалоговом окне «Открыть файл»

Это часть кода, где я пытаюсь найти элемент управления элементом списка.

Gesture.Tap(MainMap.UIAppUnderTest.UIPlusPopupWindow.UIItemMenu.UIOpenfileMenuItem); 
OpenWindowMap.OpenWindow.WaitForControlExist(); 
Gesture.Tap(OpenWindowMap.OpenWindow.TopItemsPane.ChooseFolderPane); 
Keyboard.SendKeys(Classes.Core.TestDirPath); 
Keyboard.SendKeys("{ENTER}"); 
Gesture.Tap(OpenWindowMap.OpenWindow.UIItemsViewList.UI0ListItem); 

В последнем сырье я получаю Exeption подобное:

Test method AppUnderTestCUIT.Tests.PlaylistTest1.PlaylistFormatsTest threw exception: 
Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException: 
The playback failed to find the control with the given search 
properties. 
Additional Details: 
TechnologyName: 'UIA' 
FrameworkId: 'DirectUI' 
AutomationId: '0' 
---> 
System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component. 

ли кто-нибудь иметь идеи?

ответ

0

Вы можете найти элементы управления из редактора UIMap? делает Visual Studio их? Я не вижу в вашем коде, что вы пытаетесь найти элемент управления. Вы просто ждите его по умолчанию, указанное в настройках Playback, а затем продолжайте действия. Если элемент управления не найден в пользовательском интерфейсе, вы получаете исключение сверху.

Попробуйте найти элемент управления из редактора UIMap, используя опцию Locate Control.

В свойствах поиска содержится очень немного сведений об управлении. Вероятно, это проблема. Особенно ваш AutomationID обычно не должен быть «0». Если это «0», попросите свою команду разработчиков предоставить вам некоторые идентичные и значащие AutomationID.

веселит, Alex

+0

Привет, Алекс, я создаю этот элемент управления с помощью редактора UIMap и содержит свойство AutomationID. Локализовать элемент управления не работает, но когда я открываю редактор UIMap и пытаюсь установить идентификатор пользователя с помощью CTRL + I, он отображается на карте как уже созданный. –

+0

Даже на изображении, которое вы указали, свойство 'AutomationID' равно '0', а также в тексте исключения. Почему вы хотите использовать жесты в этом окне «Открыть»? он выглядит как стандартный диалог Windows. Если вы хотите открыть файл, просто введите его путь и нажмите «Открыть» или введите ключ. Не нужно возиться с этими элементами, потому что я предполагаю, что они не относятся к вашему тестированию. –

+0

Я должен найти этот элемент, чтобы добавить Assertions, который дает мне возможность проверить, в каких форматах может открываться мое приложение. Если я использую поле «Открыть файл», я не поймал выбранный файл открывается или нет –

0

У меня была такая же проблема, и я был удивлен MS Coded UI не может хорошо взаимодействовать с файловым браузером MS Windows.

В конце я записал щелчок мышью на текстовое поле «Имя файла:» в нижней части окна. Это было одно из немногих вещей, которые работали с кодированным пользовательским интерфейсом в этом окне. Затем я выбрал Generate Code, назвав его «Common_Filebrowser_Filename».

Затем я открыл «UIMap.uitest», нашел мой метод «Common_Filebrowser_Filename», щелкнул правой кнопкой мыши и выбрал «Переместить код в UIMap.cs». Я не знаю, знакомы ли вы с этим вариантом. Если вы этого не сделаете, изменения кода заставят вас перезаписать при записи следующего теста!

Наконец, я написал код ниже, вы можете увидеть мой собственный код между комментариями ...

[TestMethod()] 
    public void FindFile() 
    { 
     this.UIMap.Common_Filebrowser_Filename(); 

     //Custom code to find file.... 

     //Enter Directory 
     String directory = "C:\\myDir\\testFiles"; 
     foreach (char c in directory) 
     { 
      Keyboard.SendKeys(c.ToString()); 
     } 
     //Enter filename 
     String file = "\\myTestFile"; 
     foreach (char c in file) 
     { 
      Keyboard.SendKeys(c.ToString()); 
     } 

     //End of custom code to find file 
    } 

Отказ от ответственности: Я использую Windows 10 (последняя версия), VS2017 (последняя). Я еще не экспериментировал, чтобы выяснить, нужно ли мне изменить свой метод тестирования, чтобы включить расширение файла, если я выполняю работу, когда файловый браузер делает доступ к расширению файла. В моем случае расширения скрыты, и я не знаю, будет ли отображение расширений файлов путать мой тест.

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

Вам нужно будет записать свой собственный тест, чтобы нажать кнопку «Открыть» в правом нижнем углу окна «Браузер файлов».

Надеюсь, это поможет.

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