Получение трудности, чтобы сосредоточиться на недавно открытом окне в селене

Я не могу сосредоточиться на недавно открытом окне, используя селен и Java. Я использую Internet Explorer для запуска моего приложения. Новое окно открывается, но не может ничего выполнить в новом окне. Я пробовал с

Set<String> allwindows = driver.getWindowHandles();

но проблема до сих пор не решена.

Ниже приведен код, который я использую.

driver.get("www.tririga.com");
String parentwindow=driver.getWindowHandle();
driver.findElement(By.id("login")).click();

for(String childwindow: driver.getWindowHandles()) {
    driver.switchto().window(childwindow);
    driver.findElement(By.id("submit")).click();
    driver.close();
}

driver.switchto().window(parentwindow);
driver.close();

Всего 1 ответ


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

WebDriverWait wait = new WebDriverWait(driver, 10);

driver.findElement(By.id("login")).click();

wait.until(ExpectedConditions.numberOfWindowsToBe(2));
for(String childwindow: driver.getWindowHandles()) {
    if (!childwindow.equals(parentwindow)) {
        driver.switchto().window(childwindow);
        driver.findElement(By.id("submit")).click();
        driver.close();
    }
}

driver.switchto().window(parentwindow);
driver.close();

Если это конец вашего кода и вы просто хотите закрыть все окна, просто используйте quit ()

Выход из этого драйвера, закрытие каждого связанного окна.

for(String childwindow: driver.getWindowHandles()) {
    if (!childwindow.equals(parentwindow)) {
        driver.switchto().window(childwindow);
        driver.findElement(By.id("submit")).click();
    }
}

driver.quit();