Закодированный тест пользовательского интерфейса не обнаруживает сборку SilverlightUIAutomationHelper

Я пытаюсь выполнить закодированные тесты пользовательского интерфейса с помощью Visual Studio 2010 на моем сайте SharePoint 2010. Определенный файл в SharePoint запускает мое приложение Silverlight в отдельном окне. Я добавил сборку SilerlightUIAutomationHelper в качестве ссылки во все мои проекты Silverlight, в которых она выполняется. Это ДОЛЖНО позволять мне записывать действия внутри него, но при попытке записи в моем приложении Silverlight выскакивает сообщение об ошибке:

No Silverlight controls were detected. Verify that the application under test
is built using Silverlight assemblies with a version of 4.0 or greater and that
a reference to the Microsoft.VisualStudio.TestTools.Extension.SilverlightUIAutomationHelper.dll
assembly has been added to the project.

Я использую Silverlight 5.0, так что это не может быть проблемой. Я также убедился, что dll SilverlightUIAutomationHelper вошла в пакет xap.

Мне удалось успешно записать эти действия в SharePoint 2013 / Visual Studio 2012 с помощью этого расширения: http://visualstudiogallery.msdn.microsoft.com/28312a61-9451-451a-990c-c9929b751eb4

Есть идеи, почему это происходит? Что я могу сделать, чтобы это исправить?


person tnw    schedule 03.04.2013    source источник
comment
Вы используете последнюю версию Internet Explorer, как это предлагается на странице расширения, на которую вы ссылаетесь?   -  person jv42    schedule 04.04.2013
comment
@ jv42 Да, я пробовал это с IE8 и 9   -  person tnw    schedule 04.04.2013
comment
Иногда закодированные тесты пользовательского интерфейса выглядят странно, попробуйте вручную щелкнуть элемент управления серебристым светом, пока он ищет элементы управления, чтобы увидеть, найдет ли он его.   -  person Pedro.The.Kid    schedule 23.07.2013
comment
У вас установлен пакет функций 2?   -  person Omri Btian    schedule 13.09.2013


Ответы (1)


Для выполнения закодированных тестов пользовательского интерфейса в Silverlight 5 вам необходимо обновить помощник по автоматизации закодированного пользовательского интерфейса отсюда: Галерея Visual Studio: Плагин UI Test для Silverlight Старый плагин, поставляемый с VS2010, работает, но только на SL4 и ниже.

SL5 был реализован немного иначе, и он нарушил закодированные тесты пользовательского интерфейса, что побудило разработчиков переключиться на VS2012 и новый плагин автоматизации пользовательского интерфейса (как вы обнаружили).

После установки исполняемого файла UITestPluginForSilverlight.msi вам необходимо указать эти сборки в части Silverlight вашего проекта (которая у вас уже есть).

Насколько я помню, причина, по которой ваши закодированные тесты пользовательского интерфейса сломались в VS2010, но работают в VS2012, заключается в том, что файлы SL5 и SL4 UIMap.designer.cs, которые генерируются тестовыми рекордерами, не очень совместимы друг с другом.

Записи SL4, созданные с помощью помощника автоматизации SL4, не будут работать с версией SL5 AutiomationHelper. Однако SL5 Autiomation Helper будет работать с записями SL4, если эти записи созданы VS2012.

Итак, чтобы уточнить: когда вы используете диктофон, он создает файл UIMap. Файл карты состоит из трех частей:

  1. XML-листинг всех записанных методов
  2. Дизайнер сгенерировал частичный класс за скрытым кодом.
  3. Частичный класс пользователя.

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

Для каждого элемента управления, обнаруживаемого регистратором, он объявляет экземпляр соответствующего объекта тестирования / взаимодействия.

При объявлении этих объектов регистратор определяет набор свойств, доступных для обнаружения / поиска. В следующий раз, когда воспроизведение будет выполнено, оно берет эти свойства и использует их для поиска фактического элемента управления.

Кроме того, у всех элементов управления есть родительский элемент, поэтому регистратор обязательно указывает родительский элемент пользовательского интерфейса для каждого обнаруженного элемента управления. Для SL4 и SL5 родители следующие:

  • Окно браузера
  • HTML-страница
  • Div (содержащий среду выполнения silverlight)
  • SL Object (плагин SL Runtime)
  • Основной элемент пользовательского интерфейса SL (обычно волнистый индикатор)
  • Рамки навигации
  • Внутренние страницы
  • Управление

Конструктор:

  1. Родительский контроль / объект взаимодействия

Искать свойства:

  1. Заголовок страницы: общая строка, отображаемая заголовком окна браузера.
  2. Номер экземпляра: (для списков начинается с 1 ... что странно)
  3. Идентификатор элемента управления: (определяется атрибутами xaml Name или x: Name)
  4. Отображаемое имя: это применимо для элементов поля со списком / списка, поскольку оно работает путем объединения всего, что отображается в элементе элемента поля со списком / списка, в сочетании с номером экземпляра этого элемента: например:

Поле со списком с двумя элементами, каждый из которых называется «Элемент списка», можно обнаружить по следующим отображаемым именам:

«Элемент списка: 1» и «Элемент списка: 2»

  1. Любая комбинация и перестановка атрибутов поиска (их можно посмотреть).

Короче говоря, реальные объекты взаимодействия, генерируемые регистраторами, в SL4 и SL5 различны. Это означает, что вы не можете взять один UIMap.designer.cs и заменить его другим. Платформа тестирования (и связанные с ней объекты взаимодействия, используемые в UIMap.designer.cs) не совместимы на двоичном уровне. Вот почему ваше воспроизведение не работает.

person bleepzter    schedule 24.09.2013