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

Школа тест-менеджеров v. 2.0
онлайн, начало 16 октября
Школа для начинающих тестировщиков
онлайн, начало 17 октября
Python для начинающих
онлайн, начало 16 октября
Организация автоматизированного тестирования
онлайн, начало 18 октября
Фотография

Selenium WD - проблема с несколькими поп-ап окнами

Selenium WD PHP

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

#1 inspectornaix

inspectornaix

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

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


Отправлено 21 Май 2014 - 12:19

Друзья, прошу вашей помощи, так как бесчисленное кол-во прочтенных мануалов не дали результатов.

Для начала обрисую ситуацию:

 

На основной странице сайта есть кнопка, при клике на которую открывается Pop-Up окно.

В свойствах данной кнопки описано открытие этого окна. Только одного.

 

Нажимаем на кнопку, и видим как открывается это окно, назовем его w1, а вслед за ним открывается еще одно, назовем его w2.

У данных окон отсутствует параметр "name", поэтому было принято решение переключаться между ними при помощи

"getWindowHandles". 

 

Итак - кликаю я по кнопке:

$driver->findElement(WebDriverBy::linkText('TESTBUTTON'))->click();

и ловлю хандлы:

$handles = $driver->getWindowHandles();
var_dump($handles);

Далее начинается веселье. Окна открыто 3, а хандла поймано 2:

array(2) {
  [0]=>
  string(38) "{xxxxxxxx-xxxx-xxxx-xxxx-2a81223068e5}"
  [1]=>
  string(38) "{xxxxxxxx-xxxx-xxxx-xxxx-154255961df0}"
}

0 - основное окно

1 - первое дочернее

 

Подумал немного и решил сделать так - ловлю хандлы, переключаюсь на 1ое дочернее и делаю еще раз getwindowhandles:

$handles2= $driver->getWindowHandles();
var_dump($handles2);

И обнаружил что отображаются все те же 2 хандла - основного и первого дочернего.

 

 

 

Кто нибудь сталкивался с такой матрешкой и как вы вышли из ситуации?

Цель - переключиться на 2ое дочернее окно.


  • 0

#2 Petrov.Sergey

Petrov.Sergey

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

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 22 Май 2014 - 06:23

Метод getWindowHandles() возвращает не LIST, а SET. Ключевая разница между этими коллекциями в том, что список может содержать дубли, а SET не может.
У меня предположение: два дочерних окна имеют одинаковые хэндлы. Поэтому при формировании сэта они "схлопываются" в один.
Приложение, как я понял, должно при клике открывать одно окно, а открывает два (второе - дубль).
Дубль имеет тот же хэндл и всё то же самое, что и у первого дочернего.

Сомневаюсь, что переключение между двумя окнами с одинаковыми хэндлами возможно.
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#3 inspectornaix

inspectornaix

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

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


Отправлено 22 Май 2014 - 07:21

Нет. Хендлы были разные.

Решил проблему. На первом дочернем выполнил некоторые действия и вызвал хендлы еще раз.

На этот раз нашлись все.


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами Selenium WD, PHP

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

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

Яндекс.Метрика
Реклама на портале