![Фотография](https://secure.gravatar.com/avatar/c092c3027eb3281906fd86d1371d5821?s=100&d=https%3A%2F%2Fsoftware-testing.ru%2Fforum%2Fpublic%2Fstyle_images%2Fmaster%2Fprofile%2Fdefault_large.png)
selenium не видит новое окно
#1
Отправлено 23 августа 2011 - 13:42
print_r($allWindow = $this->getAllWindowTitles());
но нужного мне окна нет в возвращаемом массиве.
это может быть потому, что оно открывается в новой вкладке? я слышала что селениум не работает с вкладками....
а если тогда в firefox, например, отключить опцию "Вместо новых окон открывать новые вкладки", это не поможет?
#2
Отправлено 23 августа 2011 - 14:53
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#3
Отправлено 24 августа 2011 - 05:34
#4
Отправлено 25 августа 2011 - 05:21
во всех браузерах оно открывается как новая вкладка. пробовала изменить в параметрах фаерфокса, чтоб он не открывал окна во вкладках. все равно это не помогает. в массиве окон, который я получаю вот так:
print_r($AllWindow = $this->getAllWindowTitles());выводится только одно окно - главное....
#5
Отправлено 26 августа 2011 - 09:38
Вы, наверное, меняли параметры вашего фаерфокса. Нужно создать профиль ФФ, настроить его так чтобы он открывал в новом окне, и тесты уже запускать этим профилем. Потому что иначе он просто создает "чистый" экземпляр браузера, который про ваши настройки ничего не знает.пробовала изменить в параметрах фаерфокса, чтоб он не открывал окна
#6
Отправлено 26 августа 2011 - 10:53
и во время выполнения теста это окно открывается именно в новом окне, но селениум его title не возвращает
#7
Отправлено 23 октября 2011 - 19:52
)))
Тоже застрял
У меня два решения
1) Либо придумать как селениуму сказать что открылось новое окно и что надо бы там теперь жамкать кнопки
2) Как-то обработать ссылку и вставить в комманду селениума open
с вариантом вторым не получается там текст из нескольких ссылок с меняющимся окончанием и по ссылке я кликаю вот так
click
link=http://izhevsk.ru/forummisc/submit_auth_code*
какой коммандой нужно воспользоваться чтоб взять полностью ссылку чтоб потом воспользоваться open ${Link}
типа
----
Спасибо
(с)из лучших на свете книг "Звенящие кедры России"
#8
Отправлено 24 октября 2011 - 06:38
String href = selenium.getAttribute("//a[contains(@href,'forummisc/submit_auth_code')]@href"); selenium.open(href);
А если перейти к Selenium 2 Webdriver, то почти наверняка решится и проблема с распознаванием всплывающих окон
#9
Отправлено 10 августа 2013 - 06:42
Была такая же проблема.но нужного мне окна нет в возвращаемом массиве.
Выкладываю результат моих трехдневных усилий в эту сторону:
https://docs.google....dit?usp=sharing
Сейчас, в таком варианте, все работает.
Но тема слишком актуальна, по этому предлагаю писать комментарии в файл,
если вдруг что-либо поменяется и перестанет работать.
Также буду рад более простым способам решения этой задачи.
#10
Отправлено 10 августа 2013 - 14:02
И этого может быть недостаточно. Необходимо эти настройки указать при инициализации драйвера в коде.Вы, наверное, меняли параметры вашего фаерфокса. Нужно создать профиль ФФ, настроить его так чтобы он открывал в новом окне, и тесты уже запускать этим профилем. Потому что иначе он просто создает "чистый" экземпляр браузера, который про ваши настройки ничего не знает.
пробовала изменить в параметрах фаерфокса, чтоб он не открывал окна
Что-то типа такого:
FirefoxProfile profile = new FirefoxProfile() profile.setPreference("НАСТРОЙКА", true/false)У меня было что то подобное, посмотрите мою тему, может что то подчеркнете для себя
#11
Отправлено 12 августа 2013 - 09:17
//Запоминаем основное окно
String winHandleBefore = driver.getWindowHandle();
//Выполняем действие которое открывает новое окно
driver.findElement(By.xpath("")).click();
//Переключаемся на новое окно
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
// Выполняем действия в новом окне
driver.findElement(By.xpath("")).click();
driver.findElement(By.id("")).click();
//Закрываем новое окно, если оно больше не нужно
driver.close();
//Переключаемся назад к первоначальному окну
driver.switchTo().window(winHandleBefore);
//Продолжаем с первоначальным окном
driver.findElement(By.linkText("")).click();
#12
Отправлено 12 августа 2013 - 09:26
Простите, а зачем форить по всем окнам, если Вам нужно только последнее, только что открывшееся окно?//Переключаемся на новое окно
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
#13
Отправлено 25 сентября 2013 - 09:39
А как получить последнее открывшееся окно без for?Простите, а зачем форить по всем окнам, если Вам нужно только последнее, только что открывшееся окно?
//Переключаемся на новое окно
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
#14
Отправлено 25 сентября 2013 - 10:23
Set<String> currentWindowHandles = driver.getWindowHandles(); //some actions String newWindowHandle = currentWindowHandles.removeAll(driver.getWindowhandles()).iterator().next();
#15
Отправлено 25 сентября 2013 - 11:11
Чет у меня не работает... //неверные аргументы или типыЕсли грубо:
Set<String> currentWindowHandles = driver.getWindowHandles(); //some actions String newWindowHandle = currentWindowHandles.removeAll(driver.getWindowhandles()).iterator().next();
#16
Отправлено 25 сентября 2013 - 11:31
Set<String> windowHandles = driver.getWindowHandles(); //some actions Set<String> currentWindowHandles = driver.getWindowHandles(); currentWindowHandles.removeAll(windowHandles); String newWindowHandle = currentWindowHandles.iterator().next();
#17
Отправлено 25 сентября 2013 - 12:09
Спасибо, теперь смысл ясен.Ну я ж говорил что "грубо" :)
Set<String> windowHandles = driver.getWindowHandles(); //some actions Set<String> currentWindowHandles = driver.getWindowHandles(); currentWindowHandles.removeAll(windowHandles); String newWindowHandle = currentWindowHandles.iterator().next();
Я просто пробовал без удаления:
//запоминаем текущее окно //открываем новое окно Set<String> currentWindowHandles = driver.getWindowHandles(); String newWindowHandle = currentWindowHandles.iterator().next(); driver.switchTo().window(newWindowHandle);но почему-то переключения не происходило...
PS. в C# в этом плане намного легче - просто индекс окна указываешь
#18
Отправлено 25 сентября 2013 - 12:21
В джаве тоже можно взять последний элемент, но делать так нельзя, и советую избавиться от этого как можно быстрее :)PS. в C# в этом плане намного легче - просто индекс окна указываешь
getWindowHandles не гарантирует хронологический порядок в списке. Особенно это касается IE.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных