Открытие нового окна и переключение между окнами

Добрый день. В течении теста нужно открыть новое окно #chrome и далее переключаться между двумя окнами.
Способы, которые пробовал либо заменяют текущий драйвер, либо создают новый так, что driver.window_handles знает только об одном - текущем окне.

Подскажите реализацию пожалуйста.
Заранее благодарю.

Вот так к примеру легко открыть :slight_smile:

try {
    ((JavascriptExecutor) driver).executeScript("window.open()");
} catch (WebDriverException e){
    //do smth
}

Большое спасибо за ответ.
context.driver.execute_script(“window.open()”)
У меня открывает новую вкладку, что для меня не подходит тк я перемещают между двумя разными учетными записями одного ресурса. А поменять настройки ChromeDriver для того, что бы открывалась не вкладка, а окно - я что то не пойму как.
Есть решение этой задачи?

driver1 = init chrome 1 c нужным профилем, если нужно
driver2 - init chrome 2 c нужным профилем, если нужно

ну а далее посылаете нужные команды на нужные драйвера

Это решение у меня прозапас как не самое элегантное. Дело в том, что есть готовый год для работы, который уже написан. Конечно дописать двоечку не особо проблематично, при этом добавляет порядочно лишнего, тк этот же код используется и в первом драйвере.
А если окон будет шесть?

В таком случае нужно использовать WebDriverFactory например > GitHub - barancev/webdriver-factory: An utility to manage WebDriver instances

тут смотрели? - WebDriver features: Робота с несколькими окнами (вкладками) одновременно при помощи Selenium Web Driver

Е*ушки-воробушки, чуваки причем здесь webdriver-factory?)), открывать через js тоже не вариант, если есть нормальные адекватные решения, например готовое и рабочее:

$I->executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {
$handles = $webdriver->getWindowHandles();
$last_window = end($handles);
$webdriver->switchTo()->window($last_window);
});

1 лайк

Непонятно, а где здесь код открытия нового окна?
Вижу только код переключения на последнее окно по хэндлу.