Selenium (WebDriver) Junit 4 переключение между окнами выпуска - PullRequest
1 голос
/ 07 сентября 2011

Я тестирую веб-приложение, которое создает новое окно спустя долгое время после нажатия кнопки.Последовательность следующая

окно 1: (родительское окно) нажмите кнопку, чтобы создать окно 2

окно 2: окно прогресса отображается до тех пор, пока фоновый процесс на сервере не вернет окно данных

3: окно прогресса превращается в 3-е окно (с другой ручкой)

Я хочу правильно дождаться появления 3-го окна.Я знаю, каким будет «заголовок» всех 3 окон, однако, чтобы получить заголовки от WebDriver, я должен использовать следующий код:

while(timeout has not occured...){ 
    for (String handle : _driver.getWindowHandles()) {
       String myTitle = driver.switchTo().window(handle).getTitle();
       if(3rdWindowTitle.equalsIgnoreCase(myTitle)){
           return true;
       }
    }
}

Это будет эффективно переключать активное окно вперед и назад каждый развремя он зацикливается из-за «switchTo».Это заставляет окна Firefox вращаться взад-вперед очень быстро и является неприятным.Мне нужен способ получить заголовки доступных окон без необходимости «переключать» каждое окно в цикле, ожидающем 3-го окна.Любые идеи?

Я в основном хочу метод (waitForWindowByTitle (titleIWant)), который будет блокироваться, пока не появится окно с заголовком, который я хочу.

1 Ответ

1 голос
/ 27 декабря 2011

Что ж, лучше подождать, пока появится ваше окно, проверив количество окон.Например:

for(int i=0; i<noOfTrials;i++){
        noOfWindows = driver.getWindowHandles().size();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        if(noOfWindows>currentNoOfWindows){
        break;
        }
    }

}

, тогда в первый и последний раз вы можете просматривать окна (используя switchTo) и переходить к нужному окну.

...