Чем дальше в лес, тем толще партизаны (с). Я добралась до ветвлений.
Задача: клик по баннеру на сайте, в новой вкладке открывается страница _одного из двух_ сайтов рандомно, проверяем, что открылось что-то верное, уходим обратно к основной странице.
Мне удалось при помощи Selenium IDE FlowControl скреативить следующий вариант:
Результат превзошел все ожидания: по моему ветвлению один из заданных в баннере сайтов открывается.... В том окне, где селениум О.о И назад к селениуму откатываться не желает.
Плюс селект виндовс выполняется (выполнялся до добавления ветвления, точнее) адекватно, но на на вкладку переключался только сам селениум, в браузере оставалась открытой новая. Это нормально? И возможно ли ее (новую вкладку) вообще закрыть какой-нибудь командой?
По команде close в режиме "тыкнуть отдельно каждую команду" все ок, а при выполнении теста закрывается изначальная вкладка (сайт который собственно тестируется) и выполнение теста тормозится на ошибке.
Ошибок не выдает, странно себя не ведет. Идея этой конструкции: тест выясняет, какой из двух сайтов открылся. Если откроется посторонний сайт, тест упадет в ошибку. Может, и несовершенная конструкция, но я ею в каком-то смысле горжусь :)
Остался вопрос: а) как закрыть не ту вкладку, с которой работа идет по умолчанию, а ту, которая открылась по клику на баннер? selectWindow+close не катит :( Или как новую вкладку открыть в виде всклывающего окна? не нового в браузере, а именно всплывающего. Ссылки (не баннеры), которые должны быть в новой вкладке, у меня в селениуме открываются именно так и close отлично с их видит и закрывает...
У меня в процессе теста открывается новая вкладка (или новое окно, если специально настроить это в браузере). close, goBack действуют _на изначальную_ вкладку, с которой работа начиналась. Новую не затрагивают. А мне нужно _закрыть_ новую и _вернуться_ к старой.
Дополнение. Нашла плюс-минус рабочее решение второй проблемы, буду рада, если предложат лучше. Проверка у меня разбита на несколько кейсов, в итоге следующий после того, в котором происходит переход на новую вкладку, начинается с команды open (страница, открывшаяся в новой вкладке, сменяется на изначальную). А последний кейс в плане заканчивается командой close, которая эту новую вкладку убивает.
Плюсы - все кейсы выплняются корректно, не множатся лишние вкладки.
Минусы - возможно, это все-таки извращение? Если кто-нибудь все-таки знает способ красивей - делитесь :)
Все-таки снова поднимаю тему. Разобралась в том, что найденный мной вариант по ветвлению не работает, т.к. getLocation возвращает не true или false, а текст url. Пока цепляюсь за элемент, который есть только на одной из двух страниц, но все же, есть ли способ сделать ветвление с проверкой именно по url?
И еще вопрос, несколько на другую тему, но к тому же тесту. Сработало ветвление, открывшийся сайт определен, и мне нужно проверить, что это действительно та страница (особенно при условии, что цепляюсь я за элемент, а не за адрес.
В таком виде они не работают, т.к. проверка получается нацеленной не на открывшуюся страницу, а на изначальную, и выдает отрицательный результат, не смотря на сделанный ранее selectPopUp. selectWindow сделать не получается, т.к. title у открывшихся страниц может быть очень разным, и их сильно больше двух.Так что снова лезть в ветвления мягко говоря не хочется. Возможно ли сделать selectWindow по другому параметру или как-то иначе выбрать окно?