Кодовый тест интерфейса с всплывающим окном веб-браузера - PullRequest
2 голосов
/ 21 сентября 2011

Я пытаюсь использовать тест Coded UI для управления веб-приложением (для которого у меня нет кода soruce) для генерации входных данных для моего приложения (заполнение формы и т. Д.).

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

Есть ли способ "переместить фокус" в открывшееся окно браузера?

Использование VS 2010, IE9

Ответы [ 2 ]

1 голос
/ 14 октября 2014

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

Вдохновленный курсом PluralSight по Selenium с CodedUI, я создал класс под названием Browser, который имеет общедоступный статическийэкземпляр объекта BrowserWindow.В этом классе у меня есть метод Initialize (), который присваивает моему статическому экземпляру BrowserWindow значение BrowserWindow.Launch("yourUrlHere").Когда я нажимаю на ссылку, которая открывается в новом окне, и мне нужно «переключить фокус» на новое окно, я просто переназначаю свой статический объект BrowserWindow на значение BrowserWindow.Locate("windowTitleGoesHere").Теперь, если мне нужно искать элемент на странице с окном браузера в качестве контекста поиска, у меня всегда есть правильное окно браузера.Когда это окно закрывается, я просто переназначаю свой статический объект BrowserWindow обратно в главное окно, используя метод BrowserWindow.Locate ("windowTitleGoesHere").

HTH

0 голосов
/ 27 сентября 2011

Вы можете указать родителя для элементов управления, которые вы ищете.Итак, все, что вам нужно:

1) отслеживать открытые окна IE (вы можете найти их по названию, HWND и т. Д.)

2) хранить эти окна как пару BrowserWindowпеременные.

3) искать все элементы управления следующим образом:

HtmlHyperLink hl = new HtmlHyperLink(window2);
// rest of specification

4) вы получаете элементы управления в нужном вам окне

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...