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

Фотография

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 WD, PHP

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

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