Вкладки в Selenium IDE
#1
Отправлено 23 ноября 2010 - 10:04
#2
Отправлено 23 ноября 2010 - 10:39
click | link_locator /*кликаем по ссылке*/
selectPopUp | window_id_or_name /*выбираем появившееся окно или таб*/
close | /*закрываем появившееся окно*/
selectWindow | null /*вновь выбираем прежнее окно и продолжаем работу*/
В случае с Selenium RC и при использовании высокоуровнего языка, знать идентификатор окна не обязательно.
P.S. Открывать страницы в новых окнах или в новых вкладка в Fx настраивается: Инструменты > Настройки > Вкладки > "Вместо новых окон открывать новые вкладки"
Сообщение отредактировал stmark: 23 ноября 2010 - 10:43
#3
Отправлено 23 ноября 2010 - 10:50
public static void openLinkInTheSameWindow(ISelenium selenium, string linkText) { string jsres = selenium.GetEval("var links = selenium.browserbot.getCurrentWindow().document.body.getElementsByTagName('A');var link = '';for(var i = 0; i < links.length; i++) {var linkText = links.item(i).innerHTML;linkText = linkText.replace(new RegExp('<\\/?[^>]+>', 'gi'), '');if(linkText == '"+linkText+"') {link = links.item(i).href;break;}}link;"); if (jsres == "") throw new SeleniumException("ne nashel ssliku"); selenium.Open(jsres); }
openLinkInTheSameWindow(selenium, "Подтвердить регистрацию"); -- открывает ссылку "Подтвердить регистрацию" в том же окне.
#4
Отправлено 01 декабря 2010 - 07:52
click | link_locator /*кликаем по ссылке*/
selectPopUp | window_id_or_name /*выбираем появившееся окно или таб*/
close | /*закрываем появившееся окно*/
selectWindow | null /*вновь выбираем прежнее окно и продолжаем работу*/
Я так понял между selectPopUp и selectWindow разницы нет?
Ввожу как Вы и подсказали. Но проблема - когда просто вручную выполняю эти действия, то все норм, но при запуске автом. теста пишет [error] Could not find window with title window_title
#5
Отправлено 01 декабря 2010 - 09:47
2 stmark
Я так понял между selectPopUp и selectWindow разницы нет?
Ввожу как Вы и подсказали. Но проблема - когда просто вручную выполняю эти действия, то все норм, но при запуске автом. теста пишет [error] Could not find window with title window_title
1. Разница между selectPopUp и selectWindow есть. SelectPopUp может выбирать только что появившееся окно, без указания его id. Правда не всегда это получается правильно. За подробностями обращайтесь к документации по командам Selenium IDE.
2. Что значит "вручную выполняю эти действия"? Скорее всего окно не успевает появится до того, как начинается выполнение команды selectPopUp, поэтому нужно подправить тест:
а) Используем waitForPopUp:
click | link_locator /*кликаем по ссылке*/
waitForPopUp | |1000 /*дожидаемся момента появления нового окна*/
selectPopUp | window_id_or_name /*выбираем появившееся окно или таб*/
close | /*закрываем появившееся окно*/
selectWindow | null /*вновь выбираем прежнее окно и продолжаем работу*/
б) Просто ждём:
click | link_locator /*кликаем по ссылке*/
pause | 1000 /*приостанавливаем выполнение теста на 1 секунду*/
selectPopUp | window_id_or_name /*выбираем появившееся окно или таб*/
close | /*закрываем появившееся окно*/
selectWindow | null /*вновь выбираем прежнее окно и продолжаем работу*/
#6
Отправлено 01 декабря 2010 - 10:11
2 stmark
Я так понял между selectPopUp и selectWindow разницы нет?
Ввожу как Вы и подсказали. Но проблема - когда просто вручную выполняю эти действия, то все норм, но при запуске автом. теста пишет [error] Could not find window with title window_title
1. Разница между selectPopUp и selectWindow есть. SelectPopUp может выбирать только что появившееся окно, без указания его id. Правда не всегда это получается правильно. За подробностями обращайтесь к документации по командам Selenium IDE.
2. Что значит "вручную выполняю эти действия"? Скорее всего окно не успевает появится до того, как начинается выполнение команды selectPopUp, поэтому нужно подправить тест:
а) Используем waitForPopUp:
click | link_locator /*кликаем по ссылке*/
waitForPopUp | |1000 /*дожидаемся момента появления нового окна*/
selectPopUp | window_id_or_name /*выбираем появившееся окно или таб*/
close | /*закрываем появившееся окно*/
selectWindow | null /*вновь выбираем прежнее окно и продолжаем работу*/
б) Просто ждём:
click | link_locator /*кликаем по ссылке*/
pause | 1000 /*приостанавливаем выполнение теста на 1 секунду*/
selectPopUp | window_id_or_name /*выбираем появившееся окно или таб*/
close | /*закрываем появившееся окно*/
selectWindow | null /*вновь выбираем прежнее окно и продолжаем работу*/
Хорошо. Но как узнать тот самый window_id_or_name? Selenium закрывает вкладку, с которой я пришол, и на все последующие действия говорит
[error] modifyWindow: Window was closed!
[error] Current window or frame is closed!
#7
Отправлено 01 декабря 2010 - 10:16
Хорошо. Но как узнать тот самый window_id_or_name? Selenium закрывает вкладку, с которой я пришол, и на все последующие действия говорит
[error] modifyWindow: Window was closed!
[error] Current window or frame is closed!
Можно просто title указать. И скопируйте весь тест сюда, а то не понятно, что Вы на самом деле выполняете.
#8
Отправлено 01 декабря 2010 - 10:29
Можно просто title указать. И скопируйте весь тест сюда, а то не понятно, что Вы на самом деле выполняете.
Base URL - http://ntb.mfpa.ru/
<table cellpadding="1" cellspacing="1" border="1">
<tbody>
<tr>
<td>open</td>
<td>/r/</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=WWW.XXX.RU</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>3000</td>
<td></td>
</tr>
<tr>
<td>selectPopUp</td>
<td>%XXX title%</td>
<td></td>
</tr>
<tr>
<td>close</td>
<td></td>
<td></td>
</tr>
<tr>
<td>selectWindow</td>
<td>null</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>/r/</td>
<td></td>
</tr>
</tbody></table>
Лог:
# [info] Executing: |open | /r/ | |
# [info] Executing: |click | link=WWW.XXX.RU | |
# [warn] Link has target '_blank', which is not supported in Selenium! Randomizing target to be: selenium_blank10681
# [info] Executing: |pause | 3000 | |
# [info] Executing: |selectPopUp | | |
# [info] Executing: |close | | |
# [info] Executing: |selectWindow | null | |
# [info] Executing: |open | /r/ | |
# [error] modifyWindow: Window was closed!
# [error] Current window or frame is closed!
И после этого я остаюсь на страничке, которая открылась в новой вкладке
#9
Отправлено 01 декабря 2010 - 10:35
# [info] Executing: |selectPopUp | | |
По поводу этой строчки. Здесь сообщение без title. Если вставляю Title, то получаю:
[error] Could not find window with title %Title%
#10
Отправлено 01 декабря 2010 - 11:08
#11
Отправлено 01 декабря 2010 - 12:28
Напишите в точности какой заголовок у окна, которое появляется. И попробуйте использовать команду selectPopUp вообще без указания тайтла.
Пробовал и то и другое. В итоге реализовал "по-индийски" - вынес открытие и закрытие вкладки в отдельный файл. В итоге закрывается вкладка с которой пришел и тест продолжается на открытой вкладке.
#12
Отправлено 06 мая 2011 - 09:12
#13
Отправлено 26 февраля 2013 - 05:04
Что нужно: кликнуть по баннеру, открыть новую вкладку, убедиться, что она загрузилась, закрыть вкладку и вернуться к предыдущей, с которой ведется работа.
Мой код выглядит так:
<tr> <td>waitForElementPresent</td> <td>xpath=id('BANNER-R1')/x:a/x:img</td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>xpath=id('BANNER-R1')/x:a/x:img</td> <td></td> </tr> <tr> <td>selectWindow</td> <td>title=Быстрые ресурсы - Домашний Интернет - Приморский край - Ростелеком</td> <td></td> </tr> <tr> <td>close</td> <td>title=Быстрые ресурсы - Домашний Интернет - Приморский край - Ростелеком</td> <td></td> </tr>Работаю в selenium IDE, пишу только средствами самого селениума, т.е. языков программирования - не знаю.
Что получается: переход на вкладку происходит, но селениум воспринимает действие
<tr> <td>clickAndWait</td> <td>xpath=id('BANNER-R1')/x:a/x:img</td> <td></td> </tr>как ошибку (выделяет красным)
Найти открывшуюся вкладку не может (титл верный, скопирован из файрбага). По команде close - закрывает ту вкладку, с которой работа велась изначально, что в корне неправильно и не дает продолжать тест.
Есть ли возможность как-то заставить его видеть открывшуюся вкладку и возвращаться к предыдущей? Про вариант с разбивкой теста на части поняла, но извращение же :(
#14
Отправлено 26 февраля 2013 - 05:06
#15
Отправлено 26 февраля 2013 - 05:24
И почему по команде close если кликать каждую команду руками - закрывается верная вкладка, а если запускать тест целиком - изначальная? Можно, конечно, добавить в тест open, но все равно странно...
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных