Я выполняю приемочное тестирование с использованием 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);});
Однако приведенный выше код выдает ошибку на этапе, который его использует:
«Я выполняю в селене» лямбда-функцию «»
Принятие веб-драйвера не удается …
У меня есть метод, который я использую, когда я уверен, что только 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());
]
Других решений пока нет …