2015-08-13 137 views
-1

我寫了下面的代碼打開谷歌地圖窗口得到它的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:沒有這樣的窗口:目標窗口已經關閉

+0

的可能重複[硒的網絡驅動器 - 切換到父窗口(http://stackoverflow.com/questions/11359118/selenium-web-driver-switch-to-parent-window) – Rkstr22

回答

0

你切換以硒找不到窗口之前關閉驅動程序。

先做切換然後關閉驅動程序。

driver.switchTo()。window(winHandleBefore);

driver.close();

+0

關閉之前不會切換,會關閉父窗口嗎? – Rkstr22

+0

只能增加等待時間,看看會發生什麼? –

+0

實際上問題是與谷歌窗口,句柄正在改變,但它沒有被關閉。 – Rkstr22

0

檢查下面的代碼行

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

你是不是切換到右側窗口中。 你可以通過切換到第二個窗口這樣做。

driver.switchTo().window(getWindowHandles()[1]); 
+0

我成功切換到正確的窗口唯一的問題是新的谷歌地圖窗口沒有關閉。 – Rkstr22

+0

如果我沒有錯,那麼在你的情況下,父窗口正在關閉。 – Hemanth

0

下面的代碼將切換新窗口,也將在谷歌地圖窗口

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