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

Я не могу сосредоточиться на новом открытом окне, используя селен и 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();

person Jayesh Kharbas    schedule 16.01.2020    source источник


Ответы (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();

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

Закрывает этот драйвер, закрывая все связанные с ним окна.

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

driver.quit();
person Guy    schedule 16.01.2020
comment
Никакой приведенный выше код не работает для меня. Получение индекса из ошибки облигации в строке ниже. ждать.пока(ОжидаемыеУсловия.числоОкнаБудет(2)); - person Jayesh Kharbas; 17.01.2020
comment
@JayeshKharbas Маловероятно, что в этом методе нет ничего, что могло бы вызвать это исключение. Вы даже можете посмотреть на исходный код. - person Guy; 17.01.2020