Целевое окно закрыто в селене

Вопрос: На прилагаемом скриншоте я хочу нажать "Новое окно браузера". Я хочу закрыть окно браузера и нажать "Новое сообщение". Я закрыл окно браузера. Но я получаю исключение org.openqa.selenium.NoSuchWindowException: no such window: target window already closed Скриншот Ниже приведены скриншоты Ниже приведен код @Test public void testing() { driver.manage().window().maximize(); driver.get("http://www.seleniumframework.com/Practiceform/"); driver.findElement(By.id("button1")).click(); Set handle=driver.getWindowHandles(); for(String handles:handle){ try{

Вопрос:

На прилагаемом скриншоте я хочу нажать “Новое окно браузера”. Я хочу закрыть окно браузера и нажать “Новое сообщение”. Я закрыл окно браузера. Но я получаю исключение

org.openqa.selenium.NoSuchWindowException: no such window: target window already closed

Скриншот

Ниже приведены скриншоты

Ниже приведен код

@Test public void testing() { driver.manage().window().maximize(); driver.get(«http://www.seleniumframework.com/Practiceform/»); driver.findElement(By.id(«button1»)).click(); Set<String> handle=driver.getWindowHandles(); for(String handles:handle){ try{ String text=driver.switchTo().window(handles).getPageSource(); if(text.contains(«Agile Testing and ATDD Automation»)){ System.out.println(«Text found»); driver.close(); break; } }catch(Exception e){} } driver.switchTo().defaultContent(); driver.findElement(By.xpath(«//button[contains(text(),’New Message Window’)]»)).click(); driver.quit(); Ответ №1

Я думаю, вы пытаетесь вернуться в исходное окно, используя driver.switchTo().defaultContent(); ? Это неправильно.

Вам следует:

  1. сохранить исходное окно в начале теста:

String winHandleBefore = driver.getWindowHandle();

  1. нажмите кнопку, переключите окна, сделайте что угодно

  2. Для возврата в исходное окно используйте:

driver.switchTo().window(winHandleBefore);

Ответ основан на: qaru.site/questions/90036/…

Ответ №2

В вашем коде Set<String> handle=driver.getWindowHandles(); будет содержать список ручек из браузера. это также будет содержать дескриптор окна текущей вкладки в ее первой позиции.

поэтому, когда цикл выполняется в первый раз, фокус будет находиться только в текущем окне. Так как ваш код выполняет его, он закрывает текущее окно.

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

Посмотрите ниже пример.

String mainwindow = driver.getWindowHandle(); Set<String> handle=driver.getWindowHandles(); for(String handles:handle) { if(!mainwindow.equals(handles)){ try { String text=driver.switchTo().window(handles).getPageSource(); if(text.contains(«Agile Testing and ATDD Automation»)) { System.out.println(«Text found»); driver.close(); break; } }catch(Exception e) { } } }

Оцените статью
Добавить комментарий