Selenium with Webdriver — переключиться на дочернее окно без имени

Я выполняю приемочное тестирование с использованием webdriver и codeception. Я немного новичок в этом, поэтому, пожалуйста, потерпите меня. Я пытаюсь переключиться на дочернее окно, которое создается после нажатия кнопки:

<input class="submit_btn" type="button" onclick="openHAWin(this.form.purchase_clinic.value)" value="add" name="add_ha">

Поскольку для этой страницы нет ни имени этой страницы, ни встроенной в код, ни самой целевой страницы, я попытался использовать следующий рекомендуемый код для переключения на дочернюю страницу:

$I->executeInSelenium(function (\Webdriver\Session $webdriver) {
$handles=$webdriver->window_handles();
$last_window = end($handles);
$webdriver->focusWindow($last_window);});

Однако приведенный выше код выдает ошибку на этапе, который его использует:

«Я выполняю в селене» лямбда-функцию «»

Принятие веб-драйвера не удается …

0

Решение

У меня есть метод, который я использую, когда я уверен, что только 2 окна / вкладки могут быть открыты одновременно (родительский и новый), но он находится в Java, поэтому вы должны перенести его в свою среду. Этот код основан на моих исследованиях на этом портале + мои дополнения.
В основном, что сделано ниже: получить все доступные окна и переключиться на то, которое не является родительским.

    String parent = driver.getWindowHandle();

Thread.sleep(1000);
Set<String> availableWindows = driver.getWindowHandles();
String newWindow = null;
for (String window : availableWindows) {
if (!parent.equals(window)) {
newWindow = window;
}
}
if (newWindow != null) {
WebDriver op = driver.switchTo().window(newWindow);
//("Driver switched to new window: " + op.getTitle() + " | " + op.getCurrentUrl());
]
0

Другие решения

Других решений пока нет …