Возникла проблема с обработкой более двух окон с помощью селенового веб-драйвера - PullRequest
0 голосов
/ 07 января 2020
public class Abc{
    @Test
    public void test() throws InterruptedException{
    System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"\\src\\test\\java\\drivers\\geckodriver.exe");
    WebDriver driver=new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("URL");
    String mainWindow=driver.getWindowHandle();
    Set<String> set =driver.getWindowHandles();
    Iterator<String> itr= set.iterator();
    while(itr.hasNext()){
        String childWindow=itr.next();
        if(!mainWindow.equals(childWindow)){
        driver.switchTo().window(childWindow);
        System.out.println(driver.switchTo().window(childWindow).getTitle());
        driver.close();
        }
    }
    driver.switchTo().window(mainWindow);
    }
}

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

1 Ответ

2 голосов
/ 07 января 2020

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

Set<String> beforeSet = driver.getWindowHandles();
// open new window
Set<String> afterSet = driver.getWindowHandles();
afterSet.removeAll(beforeSet);
String newWindowHandle = afterSet.iterator().next();
driver.switchTo().window(newWindowHandle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...