Selenium RC. Открывается новое окно при переходе по ссылке, как начать
#1
Отправлено 07 октября 2010 - 07:41
Проблема в следующем. Селениум идет в почтовый ящик, находит письмо, открывает его,кликает по определенной ссылке, которая открывается в новом окне. Как мне перейти в это окно и далее работать в нем?
Пробовал selectWindow("Настройки") - Тайтл окна
windowFocus();
нифига не работает, не переключается он на новое окно
#2
Отправлено 07 октября 2010 - 07:53
2) А он успевает дождаться что окно открылось и загрузилось как положено?
#3
Отправлено 07 октября 2010 - 07:59
1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?
1)Да, правильный.
2)Успевает, после селектвиндоу стоит waitForPageToLoad(pageLoadTime);
Походу он просто не шарит что открылось новое окно и нужно переключится на него.
#4
Отправлено 07 октября 2010 - 08:02
Поддерживаю.1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?
Используйте waitForPopUp для ожидания догрузки нового окна.
И если не получается его выбрать по конкретному тайтлу, попробуйте через getAllWindowTitles(), getAllWindowNames() или getAllWindowIds().
Например, у меня работает такая конструкция:
selenium.waitForPopUp(selenium.getAllWindowNames()[1], "10000"); selenium.selectWindow(selenium.getAllWindowNames()[1]);
#5
Отправлено 07 октября 2010 - 08:05
1) Title окна правильный?
2) А он успевает дождаться что окно открылось и загрузилось как положено?
1)Да, правильный.
2)Успевает, после селектвиндоу стоит waitForPageToLoad(pageLoadTime);
Походу он просто не шарит что открылось новое окно и нужно переключится на него.
Сначала надо дождаться загрузки popup'а и только потом переключаться на него.
waitForPageToLoad в вашем случае ждет догрузки вашего основного окна.
#6
Отправлено 07 октября 2010 - 08:07
WaitForPageToLoad проверяет только для выбранного окна. То есть нажали кнопочку, открывается попап, мы проверили догрузилось ли окно в котором нажали кнопочку и полезли в не догрузившийся попап. waitForPopUp для окошек надо2)Успевает, после селектвиндоу стоит waitForPageToLoad(pageLoadTime);
Походу он просто не шарит что открылось новое окно и нужно переключится на него.
#7
Отправлено 07 октября 2010 - 08:07
Используйте waitForPopUp для ожидания догрузки нового окна.
И если не получается его выбрать по конкретному тайтлу, попробуйте через getAllWindowTitles(), getAllWindowNames() или getAllWindowIds().
Так это не попап окно, в том то и дело, это как бы переход по ссылке на совсем другой сайт
#8
Отправлено 07 октября 2010 - 08:09
Судя по описанию проблемы, все же popup.Selenium+Java.
Проблема в следующем. Селениум идет в почтовый ящик, находит письмо, открывает его,кликает по определенной ссылке, которая открывается в новом окне. Как мне перейти в это окно и далее работать в нем?
Пробовал selectWindow("Настройки") - Тайтл окна
windowFocus();
нифига не работает, не переключается он на новое окно
#9
Отправлено 07 октября 2010 - 08:09
А там нет разницы. Если нам нужно не дефолтное окно, то надо звать waitForPopUp. Если я сделаю openWindow то потом тоже надо звать waitForPopUpТак это не попап окно, в том то и дело, это как бы переход по ссылке на совсем другой сайт
#10
Отправлено 07 октября 2010 - 08:15
selenium.waitForPopUp(selenium.getAllWindowNames()[1], "10000");
selenium.selectWindow(selenium.getAllWindowNames()[1]);
А что в квадратных скобках указывается?
добавил эти две строки, вывалило ошибку в первой...
Сообщение отредактировал gri3li: 07 октября 2010 - 08:17
#11
Отправлено 07 октября 2010 - 08:22
Элемент массива.
selenium.waitForPopUp(selenium.getAllWindowNames()[1], "10000");
selenium.selectWindow(selenium.getAllWindowNames()[1]);
А что в квадратных скобках указывается?
добавил эти две строки, вывалило ошибку в первой...
Вы же получаете массив имен окон.
И что за ошибку выкинуло?
Вы можете попробовать и просто через известный вам title, тем более вы говорите, что он правильный. Просто сначала главное дождаться догрузки нового окна.
#12
Отправлено 07 октября 2010 - 08:33
И что за ошибку выкинуло?
Вы можете попробовать и просто через известный вам title, тем более вы говорите, что он правильный. Просто сначала главное дождаться догрузки нового окна.
К сожалению, не могу сказать что за ошибка:( показывает только что ошибка именно в этой строке, ну типа тест на ней обрывается
#13
Отправлено 07 октября 2010 - 08:46
Я не представляю себе, как вы пытаетесь программировать не видя ошибок...
И что за ошибку выкинуло?
Вы можете попробовать и просто через известный вам title, тем более вы говорите, что он правильный. Просто сначала главное дождаться догрузки нового окна.
К сожалению, не могу сказать что за ошибка:( показывает только что ошибка именно в этой строке, ну типа тест на ней обрывается
А как вы запускаете тесты? Чем пользуетесь?
Попробуйте поиграться с 'цифрой в скобках'. Поставьте 2 или 3, мб поможет.
Или как я уже говорил, пробуйте через известный вам конкретный title.
Что-то вроде:
selenium.waitForPopUp("тайтл", "10000"); selenium.selectWindow("тайтл");
#14
Отправлено 07 октября 2010 - 09:07
#15
Отправлено 07 октября 2010 - 09:09
Нет. Как раз если бы открывалась в другой вкладке, то могли бы быть проблемы, т.к. селениум не умеет работать с вкладками.А может быть проблема в том что ссылка открывается в новом браузере, а не вкладке? И селениум не может перейти в новый браузер...
#16
Отправлено 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 - айдишка окна, в которое нужно перейти
#17
Отправлено 07 октября 2010 - 09:40
Ну тут гадать нет смысла, не зная ошибки.
Я не работал в Eclipse, не знаю, но мне кажется, что в нем тоже должно быть окошко Output или подобное, в которое должен выводиться лог ошибки.
#18
Отправлено 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
#19
Отправлено 07 октября 2010 - 12:03
#20
Отправлено 08 октября 2010 - 09:27
Возможно где-то в тестах есть assert который проверяет наличие этого элемента, и после этого тест завершается.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных