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

Фотография

Chrome open page in new window instead of new Tab


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

#1 Vad1m198

Vad1m198

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

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Вадим


Отправлено 09 сентября 2015 - 13:35

Собственно проблема.

Есть страница на которой есть линка которая открывает новую вкладку. Насколько мне известно Selenium сам по дефолту должен отключать возможность открывать новые окна в новой вкладке.

Во ФФ открывается новое окно и тест проходит нормально, а в хроме открывается новая вкладка.

Кто-то сталктвался с такой проблемой? Как ее решить?


  • 0

#2 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 10 сентября 2015 - 02:57

Собсно между вкладкой и окном разница не большая - и к вкладке и к окну можно обратиться с помощью экземпляра драйвера. Вопрос в другом: какие действия вам необходимо совершить с данной вкладкой или окном?
Работать с окнами можно через handles, и, если вы знаете какой handle к какому окну принадлежит, то можно спокойно этими окнами управлять.

Вот пример из проекта: идет работа на почтовом клиенте, был произведен клик по ссылке и открылась новая вкладка, однако driver работает со старой.

Наши действия: получаем handle текущей вкладки, в списке handle'ов ищем отличную от текущей, закрываем текущую и переключаемся на новую.

string currentWindowHandle = driver.CurrentWindowHandle;
string targetWindowHandle = "";
foreach (string handle in driver.WindowHandles)
{
     if (handle != currentWindowHandle)
     targetWindowHandle = handle;
}
driver.Close();
driver.SwitchTo().Window(targetWindowHandle);

Надеюсь пример поможет.

Если нужно работать со старой вкладкой и нужно чтобы она была видна, попробуйте горячими клавишами переключиться на нее)


  • 0

:smile:


#3 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 10 сентября 2015 - 11:28

не знаю правильно ли, но я беру ссылку и открываю её, а не кликаю. Таким образом вкладка всего одна и тест нормально проходит.


  • 0

#4 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 10 сентября 2015 - 11:47

не знаю правильно ли, но я беру ссылку и открываю её, а не кликаю. Таким образом вкладка всего одна и тест нормально проходит.

Боюсь огорчить, страница может открываться не только по нажатию на ссылку) Но, например, и при нажатию на кнопку с POST запросом) и тогда получение ссылки не проканает...


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#5 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

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

ну да, но у меня канает :victory:


  • 0

#6 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 11 сентября 2015 - 09:28

а мне пришлось изгаляться :(
 

        public CalculateOrderPage ReloadPage()
        {
            Driver.Navigate().GoToUrl(Driver.Url);
            return this;
        }

  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#7 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 11 сентября 2015 - 13:42

При использовании ChromeDriver каждая вкладка имеет handle, поэтому вкладки как бы поддерживаются. Другое дело, что Selenium вообще не различает -- вкладка это или действительно новое окно. Правильно даже так сказать -- это вкладка в том же самом окне или в каком-то другом.

 

В текущей версии FirefoxDriver вкладки просто не распознаются, только окна.

 

Но в постепенно появляющейся новой версии, которая называется MarionetteDriver -- там будет как в хроме, вкладки будут считаться "окнами", у них будут отдельные handle.


  • 1
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


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

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