Закрытие нового окна в Selenium

Я написал следующий код, чтобы открыть окно карты Google, получить его URL-адрес, затем закрыть его и выполнить действия в моем предыдущем окне:

        try 
          {

           String winHandleBefore = driver.getWindowHandle();
            element("icon_google_map").click();
            for(String winHandle : driver.getWindowHandles())
             {
                driver.switchTo().window(winHandle);
             }
           Thread.sleep(9000);
            String currentURL = driver.getCurrentUrl();
            logMessage(currentURL);
            String expectedURL="xyz";
            Assert.assertEquals(currentURL, expectedURL);
            logMessage(currentURL);
            driver.close();
            driver.switchTo().window(winHandleBefore);
            return true;
    }
    catch(Exception e)
    {
        return false;
    }

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

Ошибка: org.openqa.selenium.NoSuchWindowException: такого окна нет: целевое окно уже закрыто


person Rishu Saxena    schedule 13.08.2015    source источник
comment
возможный дубликат веб-драйвера selenium - переключиться в родительское окно   -  person Rishu Saxena    schedule 18.08.2015


Ответы (3)


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

сначала сделайте переключение, затем закройте драйвер.

driver.switchTo().window(winHandleBefore);

водитель.закрыть();

person Santanu Sahoo    schedule 13.08.2015
comment
Не будет переключения перед закрытием, закроет ли родительское окно? - person Rishu Saxena; 13.08.2015
comment
может просто увеличить время ожидания и посмотреть, что произойдет? - person Santanu Sahoo; 13.08.2015
comment
на самом деле проблема с окном Google, ручка меняется, но не закрывается. - person Rishu Saxena; 13.08.2015

Проверьте строку кода ниже

for(String winHandle : driver.getWindowHandles())
             {
                driver.switchTo().window(winHandle);
             }

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

driver.switchTo().window(getWindowHandles()[1]);
person Hemanth    schedule 13.08.2015
comment
Я успешно переключаюсь на правильное окно, единственная проблема заключается в том, что новое окно карты Google не закрывается. - person Rishu Saxena; 13.08.2015
comment
если я не ошибаюсь, то в вашем случае закрывается родительское окно. - person Hemanth; 13.08.2015

Код ниже переключит новое окно, а также окно Google MAP.

for(String winHandle : driver.getWindowHandles())
             {
               driver.switchTo().window(getWindowHandles()[1]);
               driver.close();  // This will close the new open window
             }
person Rupesh Shinde    schedule 13.08.2015