Получение трудности, чтобы сосредоточиться на недавно открытом окне в селене - PullRequest
0 голосов
/ 16 января 2020

Я не могу сфокусироваться на новом открытом окне, используя селен и java. Я использую Inte rnet 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 Ответ

0 голосов
/ 16 января 2020

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

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();

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

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

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

driver.quit();
...