WebDriver - не всегда срабатывает переключение между окнами (WinHandles)

Код:

System.out.println(driver.getTitle());
//Switch to new window
for(String winHandle : driver.getWindowHandles()){
	System.out.println(winHandle);
    driver.switchTo().window(winHandle);
}
System.out.println(driver.getTitle());

В случае удачного выполнения:

[08:31:35]Window 1
[08:31:35]dbce6cf0-0853-48fe-8725-78ce614b9f4f
[08:31:35]401914e2-3c22-4ee1-98dc-cfbe7cfba2d1
[08:31:37]Window 2

В случае неудачного выполнения:

[12:07:10]Window 1
[12:07:10]0eda57f1-8703-431e-9d00-2667fe76b38f
[12:07:11]1ce4ef06-479b-4d31-8fd8-1a6f4ade939d
[12:07:11]Window 1

Тут видим что разные winHandles, но тот-же Title, т.е. переключение не произошло. Из-за етого тест валится. В чем может быть дело? Добавить кудато задержку?

Переключение между окнами добавляет дополнительной нестабильности тестам, всегда, по возможности, старался избегать их путем записывания href-а в переменную, используя getUrl(переменная)

1 лайк

А какой смысл в циклическом переборе всех хэндлов, если в цикле не проверяется никакое условие?
И почему бы окну Window 1 не оказаться обратно в конце списка?
Выполняется ровно то, что написано. Просто над логикой переключения подумать надо.

1 лайк

Интересные у вас новаторские подходы xD
Напомнило Мегатрактор с прицелом - YouTube

1 лайк

Присоединюсь к @checo. Возможно хендлы не всегда в том порядке, в котором вы ожидаете.
Нужно понять, что Вы конкретно хотите проверить, тогда может быть найдется решение.

После нажатия на кнопку открывается новое окно и тест идет дальше в новом окне.

Проблема в том что Driver не всегда переключается на новое окно. Я искал в гугле примеры и везде переключение показано именно этим способом. Чтото мне не догнать как его доработать. Я только недавно начал с автоматизацией.