Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

открытие нового окна\табы средствами Web Driver


(ivanidzzza) #1

Всем привет!

Тест кейс подразумевает открытие второго окна браузера.

Подскажите, как это сделать.

Поддерживаемые браузеры Firefox, Chrome


(AlexAlex) #2

Про табы: The Selenium WebDriver API does not support managing tabs within the browser at present. Это нормальными способами. "Ненормальные" также по ссылке.

Про окна: Создавайте новый экземпляр драйвера (=браузера), так же, как вы создаете основной, и используйте на здоровье. Или я что-то не понимаю?


(ivanidzzza) #3

Про окна: Создавайте новый экземпляр драйвера (=браузера), так же, как вы создаете основной, и используйте на здоровье. Или я что-то не понимаю?

мне нужно работать с двумя окнами сразу, поэтому тут нужен один инстанс драйвера


(ivanidzzza) #4

после более продолжительного гугления нашла вот такой способ на C#

JavaScriptExecutor js = (IJavaScriptExecutor) CurrentTest.Driver;
           js.ExecuteScript("window.open('http://ya.ru')");

           var allheaders = CurrentTest.Driver.WindowHandles;
           CurrentTest.Driver.SwitchTo().Window(allheaders[1]);

для меня работает

 


(Mykhailo Poliarush) #5

вот ссылка на статью http://automated-testing.info/knowledgebase/article/webdriver-features-robota-s-neskolkimi-oknami-vkladkami-odnovremenno-pri


(ivanidzzza) #6

спасибо, нашла в другом мете)


(tvlad) #7

И в продолжение.

А как быть если такой код (С#):

var allWindows = _driver.WindowHandles;
_driver.SwitchTo().Window(allWindows[1]); //

Отлично работает в ФФ и Хроме, а в "дорогом и любимом" ИЕ-9 коллекция "allWindows" упорно возвращает только один елемент, т.е. второго окна не видит (как с сусликом).


(tvlad) #8

Абсолютно идиотское решение:

var allWindows = _driver.WindowHandles;
var afterPopup = _driver.WindowHandles;

Именно так две одинаковые коллекции с разными именами, одна за другой. В первой 1 элемент во второй уже 2. Ожидания тут ни при чем. Проверял.