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

Фотография

Selenium RC. Открывается новое окно при переходе по ссылке, как начать


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

#1 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 07:41

Selenium+Java.
Проблема в следующем. Селениум идет в почтовый ящик, находит письмо, открывает его,кликает по определенной ссылке, которая открывается в новом окне. Как мне перейти в это окно и далее работать в нем?
Пробовал selectWindow("Настройки") - Тайтл окна
windowFocus();
нифига не работает, не переключается он на новое окно
  • 0

#2 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 07 октября 2010 - 07:53

1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?
  • 0

#3 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 07:59

1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?


1)Да, правильный.
2)Успевает, после селектвиндоу стоит waitForPageToLoad(pageLoadTime);
Походу он просто не шарит что открылось новое окно и нужно переключится на него.
  • 0

#4 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 08:02

1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?

Поддерживаю.
Используйте waitForPopUp для ожидания догрузки нового окна.
И если не получается его выбрать по конкретному тайтлу, попробуйте через getAllWindowTitles(), getAllWindowNames() или getAllWindowIds().

Например, у меня работает такая конструкция:
selenium.waitForPopUp(selenium.getAllWindowNames()[1], "10000");
selenium.selectWindow(selenium.getAllWindowNames()[1]);

  • 0

#5 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 08:05


1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?


1)Да, правильный.
2)Успевает, после селектвиндоу стоит waitForPageToLoad(pageLoadTime);
Походу он просто не шарит что открылось новое окно и нужно переключится на него.


Сначала надо дождаться загрузки popup'а и только потом переключаться на него.
waitForPageToLoad в вашем случае ждет догрузки вашего основного окна.
  • 0

#6 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 07 октября 2010 - 08:07

2)Успевает, после селектвиндоу стоит waitForPageToLoad(pageLoadTime);
Походу он просто не шарит что открылось новое окно и нужно переключится на него.

WaitForPageToLoad проверяет только для выбранного окна. То есть нажали кнопочку, открывается попап, мы проверили догрузилось ли окно в котором нажали кнопочку и полезли в не догрузившийся попап. waitForPopUp для окошек надо
  • 0

#7 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 08:07

Используйте waitForPopUp для ожидания догрузки нового окна.
И если не получается его выбрать по конкретному тайтлу, попробуйте через getAllWindowTitles(), getAllWindowNames() или getAllWindowIds().


Так это не попап окно, в том то и дело, это как бы переход по ссылке на совсем другой сайт
  • 0

#8 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 08:09

Selenium+Java.
Проблема в следующем. Селениум идет в почтовый ящик, находит письмо, открывает его,кликает по определенной ссылке, которая открывается в новом окне. Как мне перейти в это окно и далее работать в нем?
Пробовал selectWindow("Настройки") - Тайтл окна
windowFocus();
нифига не работает, не переключается он на новое окно

Судя по описанию проблемы, все же popup.
  • 0

#9 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 07 октября 2010 - 08:09

Так это не попап окно, в том то и дело, это как бы переход по ссылке на совсем другой сайт

А там нет разницы. Если нам нужно не дефолтное окно, то надо звать waitForPopUp. Если я сделаю openWindow то потом тоже надо звать waitForPopUp
  • 0

#10 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 08:15

selenium.waitForPopUp(selenium.getAllWindowNames()[1], "10000");
selenium.selectWindow(selenium.getAllWindowNames()[1]);


А что в квадратных скобках указывается?
добавил эти две строки, вывалило ошибку в первой...

Сообщение отредактировал gri3li: 07 октября 2010 - 08:17

  • 0

#11 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 08:22


selenium.waitForPopUp(selenium.getAllWindowNames()[1], "10000");
selenium.selectWindow(selenium.getAllWindowNames()[1]);


А что в квадратных скобках указывается?
добавил эти две строки, вывалило ошибку в первой...

Элемент массива.
Вы же получаете массив имен окон.

И что за ошибку выкинуло?

Вы можете попробовать и просто через известный вам title, тем более вы говорите, что он правильный. Просто сначала главное дождаться догрузки нового окна.
  • 0

#12 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 08:33

И что за ошибку выкинуло?

Вы можете попробовать и просто через известный вам title, тем более вы говорите, что он правильный. Просто сначала главное дождаться догрузки нового окна.


К сожалению, не могу сказать что за ошибка:( показывает только что ошибка именно в этой строке, ну типа тест на ней обрывается
  • 0

#13 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 08:46


И что за ошибку выкинуло?

Вы можете попробовать и просто через известный вам title, тем более вы говорите, что он правильный. Просто сначала главное дождаться догрузки нового окна.


К сожалению, не могу сказать что за ошибка:( показывает только что ошибка именно в этой строке, ну типа тест на ней обрывается

Я не представляю себе, как вы пытаетесь программировать не видя ошибок...
А как вы запускаете тесты? Чем пользуетесь?

Попробуйте поиграться с 'цифрой в скобках'. Поставьте 2 или 3, мб поможет.
Или как я уже говорил, пробуйте через известный вам конкретный title.
Что-то вроде:
selenium.waitForPopUp("тайтл", "10000");
selenium.selectWindow("тайтл");

  • 0

#14 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 09:07

А может быть проблема в том что ссылка открывается в новом браузере, а не вкладке? И селениум не может перейти в новый браузер...
  • 0

#15 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 09:09

А может быть проблема в том что ссылка открывается в новом браузере, а не вкладке? И селениум не может перейти в новый браузер...

Нет. Как раз если бы открывалась в другой вкладке, то могли бы быть проблемы, т.к. селениум не умеет работать с вкладками.
  • 0

#16 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 09:15

вобщем... попробую конкретнее/подробнее описать. вот, у меня сейчас так:
public class RUA_FF_MotivationSystem_part2 extends SeleneseTestCase {
	
	public static String ukrnetUrl = com.tests.RUA_Constants.ukrnetUrl;
	public static String pageLoadTime = com.tests.RUA_Constants.pageLoadTime;
	public static String ffPath = com.tests.RUA_Constants.ffPath;
	
	public void setUp() throws Exception {
		setUp (ukrnetUrl, ffPath);		
	}

	public void testRUA_FF_MotivationSystem_part2() throws Exception {
		selenium.open(ukrnetUrl);
		selenium.setSpeed("2000");
		selenium.windowFocus();
		selenium.windowMaximize();
		// логин как в укр.нетовскую почту
		selenium.type("Login_", "******");
		selenium.type("Password", "*****");
		selenium.click("//input[@type='image']");
		selenium.waitForPageToLoad("60000");
		// открытие письма и клик по ссылке подтверждения регистрации
		selenium.click("xpath=html/body/div[2]/div[2]/div[5]/div[2]/div/div[1]/div/div[3]/div[2]/table/tbody/tr[1]/td[4]/a/span[2]");
		selenium.click("//div[@id='displayBody']/table/tbody/tr[2]/td/font/a[3]/font/u/font");
		selenium.waitForPopUp("ctl00_Head1", "10000");
		selenium.selectWindow("ctl00_Head1");
		assertTrue(selenium.isTextPresent("Поздравляем"));
		}
}
Использую Eclipse
И вот когда селениум проходит тест,то обрывается на строке "selenium.waitForPopUp("ctl00_Head1", "10000");"
ctl00_Head1 - айдишка окна, в которое нужно перейти
  • 0

#17 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 09:40

Могу еще предположить, что не хватает 10000 милисек., попробуйте больше поставить.

Ну тут гадать нет смысла, не зная ошибки.

Я не работал в Eclipse, не знаю, но мне кажется, что в нем тоже должно быть окошко Output или подобное, в которое должен выводиться лог ошибки.
  • 0

#18 gri3li

gri3li

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 октября 2010 - 10:00

там есть что-то типа консоли, лог найти не могу(( он ведется при прохождении теста и закрывается вместе с тестом
в консоли написано вот что
12:38:56.200 INFO - Got result: OK on session cde8c7f52ecd4f17a90911d90574f702
12:38:56.200 INFO - Command request: waitForPageToLoad[30000, ] on session cde8c7f52ecd4f17a90911d90574f702
12:38:57.762 INFO - Got result: OK on session cde8c7f52ecd4f17a90911d90574f702
12:38:57.762 INFO - Command request: isElementPresent[//a[@id='ctl00_centerZone_edtEmployersNotebook_btnGetFullAccess']/span/span/span, ] on session cde8c7f52ecd4f17a90911d90574f702
12:38:58.778 INFO - Got result: OK,false on session cde8c7f52ecd4f17a90911d90574f702
12:38:58.793 INFO - Command request: testComplete[, ] on session cde8c7f52ecd4f17a90911d90574f702
12:38:58.793 INFO - Killing Firefox...
12:38:58.949 INFO - Got result: OK on session cde8c7f52ecd4f17a90911d90574f702

  • 0

#19 mcreature

mcreature

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

  • Members
  • PipPip
  • 88 сообщений

Отправлено 07 октября 2010 - 12:03

Не, это логи selenium-server'a, они не помогут...
  • 0

#20 ShortLegged

ShortLegged

    Постоянный участник

  • Members
  • PipPipPip
  • 155 сообщений
  • Город:Moscow

Отправлено 08 октября 2010 - 09:27

Вы уверены, что у Вас есть элемент с локатором - "//a[@id='ctl00_centerZone_edtEmployersNotebook_btnGetFullAccess']/span/span/span"?
Возможно где-то в тестах есть assert который проверяет наличие этого элемента, и после этого тест завершается.
  • 0


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

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