Переключится на новое окнов IDE
#1
Отправлено 29 января 2008 - 17:45
Есть проблема, необходимо по ссылке открыть окно и переключится в него, т.е. сделать его активным.
для selectwindows необходимо знать ID окна - как его получить?
#2
Отправлено 30 января 2008 - 09:13
Ставите себе Firebug, это расширение под Firefox.
Кликаете правой кнопкой на нужной ссылке, выбираете 'Inspect Element'.
В нижней части экрана отобразится метод onclick, прикрученный к этой ссылке.
Будет, например, следующее:
<...... onclick="window.open('/email_to_friend.php?id=159', 'email_to_friend', 'width=500,height=300');" ...../>Здесь ID = 'email_to_friend'.
Если используется скрипт, тогда ищем почти то же самое:
<a href="java script: myPopup.launch('/app/Test?action=helpDesk','filePopup', 'height=550,width=410,channelmode=0,dependent=1,directories=0', 'parentWindow')">send email</a>
Здесь ID = 'filePopup'.
#3
Отправлено 30 января 2008 - 09:36
Я для selenium IDE htibk проблему, но вот для selenium core нет. Он запускается Ant -ом.
Использую следующий код.
<tr> <td>click</td> <td>link=Z Test Link.html</td> <td></td> </tr> <tr> <td>pause</td> <td>3000</td> <td></td> </tr> <tr> <td>storeEval</td> <td>javascript{"var id; var ids=selenium.browserbot.openedWindows; for(var x in ids ){id=x;}"}</td> <td>popup</td> </tr> <tr> <td>selectWindow</td> <td>${popup}</td> <td></td> </tr>эта часть отрабатывает, но выбор окна так и не происходит, все действия производятся все равно с прежним окном.
#4
Отправлено 31 января 2008 - 08:49
#5
Отправлено 14 апреля 2008 - 12:07
У меня по крайней мере так прокатило. ))
#6
Отправлено 24 декабря 2008 - 12:15
Окно открывается с тем же заголовком, поэтому предыдущий халявный способ не катит. ((
Как вызвать selectWindow для случая, когда ID нету... Или я его не вижу? изучила исходный код открываемой страницы - никаких тегов типа ID, WindowID и прочее не обнаружила.
На странице, с которой надо уйти, вот код кнопки, по которой открывается нужное окошко.
<img style="border-width: 0px;" src="App_Themes/images/bt_settings.gif" onmouseout="this.src='App_Themes/images/bt_settings.gif'" onmouseover="this.src='App_Themes/images/bt_settings2.gif'" onclick="WindowPopup('Profile.aspx'); return false;" class="icon" title="Settings" id="Icons_ImageButtonNavSettings"/>
пытаюсь делать так:
<tr>
<td>selectWindow</td>
<td>Profile.aspx</td>
<td></td>
</tr>
Не работает.
Подскажите пожалуйста как решить эту проблему.
#7
Отправлено 25 декабря 2008 - 08:19
Вернемся к проблеме.
Окно открывается с тем же заголовком, поэтому предыдущий халявный способ не катит. ((
Как вызвать selectWindow для случая, когда ID нету... Или я его не вижу? изучила исходный код открываемой страницы - никаких тегов типа ID, WindowID и прочее не обнаружила.
На странице, с которой надо уйти, вот код кнопки, по которой открывается нужное окошко.
<img style="border-width: 0px;" src="App_Themes/images/bt_settings.gif" onmouseout="this.src='App_Themes/images/bt_settings.gif'" onmouseover="this.src='App_Themes/images/bt_settings2.gif'" onclick="WindowPopup('Profile.aspx'); return false;" class="icon" title="Settings" id="Icons_ImageButtonNavSettings"/>
пытаюсь делать так:
<tr>
<td>selectWindow</td>
<td>Profile.aspx</td>
<td></td>
</tr>
Не работает.
Подскажите пожалуйста как решить эту проблему.
Добрый день.
selectWindow ( windowID ) сработает в 4-х случаях:
1. windowID=null - выбираем главное окошко браузера
2. windowID=jsVarName - выбираем окошко по имени переменной, в которой хранится результат вызова js функции window.open(params)
3. windowID=wndName - выбираем окошко по внутреннему js имени окошка
4. windowID=wndTitle - выбираем окошко по заголовку
У вас остался пункт 3, но вы не знаете имени окошка? - используйте storeAllWindowNames ( variableName ) после появления окошка и как-т распечатайте результат. Это должно подсказать вам имя вашего окошка.
#8
Отправлено 25 декабря 2008 - 14:49
Добрый день.
selectWindow ( windowID ) сработает в 4-х случаях:
1. windowID=null - выбираем главное окошко браузера
2. windowID=jsVarName - выбираем окошко по имени переменной, в которой хранится результат вызова js функции window.open(params)
3. windowID=wndName - выбираем окошко по внутреннему js имени окошка
4. windowID=wndTitle - выбираем окошко по заголовку
У вас остался пункт 3, но вы не знаете имени окошка? - используйте storeAllWindowNames ( variableName ) после появления окошка и как-т распечатайте результат. Это должно подсказать вам имя вашего окошка.
Так и делаю, но в качетве имени выводится пустота, причем и для вызывающего окна. Как такое может быть?
Вот код:сначала читаю все имена окон до открытия второго окошка, а потом - после
<tr>
<td>storeAllWindowNames</td>
<td>allWin1</td>
<td></td>
</tr>
<tr>
<td>verifyEval</td>
<td>storedVars["allWin1"]</td>
<td>kkk</td>
</tr>
<tr>
<td>click</td>
<td>Icons_ImageButtonNavSettings</td>
<td></td>
</tr>
<tr>
<td>storeAllWindowNames</td>
<td>allWin2</td>
<td></td>
</tr>
<tr>
<td>verifyEval</td>
<td>storedVars["allWin2"]</td>
<td>kkk</td>
</tr>
Лог селениума:
* [info] Executing: |storeAllWindowNames | allWin1 | |
* [info] Executing: |verifyEval | storedVars["allWin1"] | kkk |
* [error] Actual value '' did not match 'kkk'
* [info] Executing: |click | Icons_ImageButtonNavSettings | |
* [info] Executing: |storeAllWindowNames | allWin2 | |
* [info] Executing: |verifyEval | storedVars["allWin2"] | kkk |
* [error] Actual value ',' did not match 'kkk'
Где же тут имена окон?
#9
Отправлено 26 декабря 2008 - 08:08
Получается, что js (и/или селениум) не предлагают ничего лучшего, чем ПУСТОТА в вашем случае. Обратите внимание на bug SEL-339.Так и делаю, но в качетве имени выводится пустота, причем и для вызывающего окна. Как такое может быть?
Поскольку вы знаете, что заголовок нового окошка совпадает с заголовком главного окна, то попробуйте:
1. Перед вызовом нового окошка:
1.1 Используя storeTitle(variableName), сохраните оригинальный заголовок главного окошка
1.2 Используя verifyEval(script), измените заголовок главного окошка, добавив восклицательный знак в конец заголовка
2. Вызывайте новое окошко
3. selectWindow(wndTitle), где wndTitle=значение variableName, полученное в 1.1, то есть выбираем окошко по title
4. Операции с новым окошком
5. Закрываем новое окошко
6. Восстанавливаем title главного окошка, используя начение variableName, полученное в 1.1, т.е. убираем восклицательный знак
#10
Отправлено 26 декабря 2008 - 10:57
1.2 Используя verifyEval(script), измените заголовок главного окошка, добавив восклицательный знак в конец заголовка
Пытаюсь сделать как вы советуете.
<tr>
<td>storeTitle</td>
<td>MainTitle</td>
<td></td>
</tr>
<tr>
<td>verifyEval</td>
<td>{document.title=storedVars["MainTitle"]+1}</td>
<td></td>
</tr>
В результате выполнения скрипта переименовывается само окошко селениума, а не то, которое надо.
Это потому что я криво пишу на джаваскрипте? Или нужно добавить какую-то команду селениума? Предварительное добавление selectWindow не помогает)
#11
Отправлено 26 декабря 2008 - 12:18
<tr>
<td>verifyEval</td>
<td>{window.document.title=storedVars["MainTitle"]+1}</td>
<td></td>
</tr>
Тогда окно переименовывается.
Проблема однако осталась - даже с другим именем selectWindow не работает - пишет, что
[error] Could not find window with title ...
Может быть, потому что когда открывается это окно, оно перекрывает окно самого селениума?
Если селениум "сверху" - то selectWindow работает.
Кто-нибудь сталкивался с этим?
#12
Отправлено 29 декабря 2008 - 08:15
Добрый день. Не понял, про окно перекрывает и селениум "сверху".Может быть, потому что когда открывается это окно, оно перекрывает окно самого селениума?
Если селениум "сверху" - то selectWindow работает.
Кто-нибудь сталкивался с этим?
Между тем у меня selectWindow работает, даже когда у всплывающего окна нет имени и title у двух окошек совпадают - выбирается именно popup окно.
Код старался написать как у вас.
Код глвного окна (html+js):
<head>
<title>Title</title>
<script type="text/javascript">
<!--
function myPopup(location) {
window.open(location)
}
//-->
</script>
</head>
<body>
<form>
<input id="id" type="button" onClick="myPopup('popup.php')" value="POP!">
</form>
</body>
Код popup (PHP):
<head>
<title>Title</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
ПОСМОТРИТЕ, как реализована WindowPopup(location) у вас, может быть все же найдете там вызов js window.open(parameters) со вторым аргументом именем popup окошка, или имя js переменной, содержащей результат вызова js window.open(parameters)...
#13
Отправлено 13 января 2009 - 17:42
Добрый день. Не понял, про окно перекрывает и селениум "сверху".
Между тем у меня selectWindow работает, даже когда у всплывающего окна нет имени и title у двух окошек совпадают - выбирается именно popup окно.
...
ПОСМОТРИТЕ, как реализована WindowPopup(location) у вас, может быть все же найдете там вызов js window.open(parameters) со вторым аргументом именем popup окошка, или имя js переменной, содержащей результат вызова js window.open(parameters)...
1. Постараюсь объяснить: у меня открыто приложение и окошко селениум IDE, в котором я запускаю тест. Когда я нажимаю кнопку в своем приложении, то появляется попап окошко, поверх окна с селениумом. Когда я перехожу к окну селениума, то там ошибка что окно с заданным заголовком (то есть этот попап) не найдено. Я выбираю одиночную команду "verifyTitle" в селениуме, жму "выполнить" - окошко обнаружено! То самое, которое перед этим не было видно. Ставила разные задержки, мало ли не успевает загрузиться и поэтому не видит. Не спасло.
я нашла вызов этого окна в исходном коде: onclick="WindowPopup('Profile.aspx'); штуки типа window.open на странице не нашла.
#14
Отправлено 03 апреля 2009 - 09:11
#15
Отправлено 06 апреля 2009 - 09:10
Если будут идеи - делитесь!
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных