Перейти к содержимому

Фотография

Переключится на новое окнов IDE


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 rfvbhuyt

rfvbhuyt

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:d

Отправлено 29 января 2008 - 17:45

Доброе время суток.
Есть проблема, необходимо по ссылке открыть окно и переключится в него, т.е. сделать его активным.
для selectwindows необходимо знать ID окна - как его получить?
  • 0

#2 VPA

VPA

    Новый участник

  • Members
  • Pip
  • 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'.
  • 0

#3 rfvbhuyt

rfvbhuyt

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:d

Отправлено 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>
эта часть отрабатывает, но выбор окна так и не происходит, все действия производятся все равно с прежним окном.
  • 0

#4 VPA

VPA

    Новый участник

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Алексеев Вадим
  • Город:СПб

Отправлено 31 января 2008 - 08:49

Нашел на англоязычном форуме обсуждение подобной проблемы.
Может, будет полезным.
  • 0

#5 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 14 апреля 2008 - 12:07

Для Selenium IDE SelectWindow работает не только с ID, но и с заголовком.
У меня по крайней мере так прокатило. ))
  • 0
Молодой пожарный не боится пламя!

#6 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 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>

Не работает.

Подскажите пожалуйста как решить эту проблему.
  • 0
Молодой пожарный не боится пламя!

#7 Gerlits

Gerlits

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Evgeny Gerlits

Отправлено 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 ) после появления окошка и как-т распечатайте результат. Это должно подсказать вам имя вашего окошка.
  • 0

#8 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 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'

Где же тут имена окон?
  • 0
Молодой пожарный не боится пламя!

#9 Gerlits

Gerlits

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Evgeny Gerlits

Отправлено 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, т.е. убираем восклицательный знак
  • 0

#10 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 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 не помогает)
  • 0
Молодой пожарный не боится пламя!

#11 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 26 декабря 2008 - 12:18

Конечно, надо писать так:
<tr>
<td>verifyEval</td>
<td>{window.document.title=storedVars[&quot;MainTitle&quot;]+1}</td>
<td></td>
</tr>
Тогда окно переименовывается.

Проблема однако осталась - даже с другим именем selectWindow не работает - пишет, что
[error] Could not find window with title ...

Может быть, потому что когда открывается это окно, оно перекрывает окно самого селениума?
Если селениум "сверху" - то selectWindow работает.

Кто-нибудь сталкивался с этим?
  • 0
Молодой пожарный не боится пламя!

#12 Gerlits

Gerlits

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Evgeny Gerlits

Отправлено 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)...
  • 0

#13 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 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 на странице не нашла.
  • 0
Молодой пожарный не боится пламя!

#14 МОлька

МОлька

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • Город:Беларусь, Минск

Отправлено 03 апреля 2009 - 09:11

Biasha, решили проблему? Похоже у меня такая же :(
  • 0

#15 Biasha

Biasha

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:СПб

Отправлено 06 апреля 2009 - 09:10

К сожалению, проблема так и не решена =(
Если будут идеи - делитесь!
  • 0
Молодой пожарный не боится пламя!


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных