2012-07-26 151 views
2

有沒有辦法查看所有瀏覽器窗口是否關閉?我看到,如果您在WebDriver上調用driver.quit()或driver.close(),則sessionId將變爲null。有沒有辦法檢查?Selenium Webdriver sessionId或檢查所有瀏覽器窗口是否關閉

我不想調用封閉或退出驅動程序,因爲它會拋出WebDriverException。所以我想在繼續之前查看瀏覽器的狀態。

+0

在WebDriver上調用quit()會關閉驅動程序打開的所有打開的窗口。那麼你想檢查什麼? 「瀏覽器狀態」是什麼意思? – 2012-07-27 10:17:40

回答

2

只需設置

driver=null; 

每次關閉瀏覽器,比檢查

if (browser!=null){ 
    //Attention: this comand is not supported 
    //as far as i know ;) 
    driver.doSomething(); 
} 

try{ 


}catch (NullPointerException e) 

    e.printStackTrace(); 
    System.err.print"DAMN"; 
} 

或接收一個NullPointerException異常;)

1

實際調用getWindowHandles而瀏覽器窗口消失將引發「 UnreachableBrowserException」。

您必須將調用放入try-catch塊並處理該錯誤。實際上,這是唯一已知的用於捕獲意外瀏覽器窗口關閉的WORKING workndnd。我有一個配置類的靜態方法做我的司機處理:我重新啓動我的瀏覽器是這樣的:

protected static void loadPages() { 

    if (driver == null || driver.toString().contains("null")) { //null refers to an missing session id 

      driver = new FirefoxDriver(); 

     //load all my page objects like 
     loginpage = new LoginPage(driver); 
     //.... 
     //.... 

     } 
try { 
     if (driver.getWindowHandles() == null || driver.getWindowHandles().isEmpty()){ //will cause an UnreachableBrowserException if the browser really is not avalable. 
      try { //you actually dont need this try catch block 
       driver.quit(); 
      } catch (Exception e) { 
       System.err.println("Quitting levtover driver did not work."); 
      } 
      driver = null; //you have to set the driver to null 
      loadPages(); 
      } 
    } catch (UnreachableBrowserException ube) { 
     driver = null; //like above set to null to make sure no driver left 
    } 

}

現在,OFC當前的測試將會失敗,但你將能夠繼續使用其餘的人。

2
public bool InstanceExist 
    { 
     get 
     { 
      if (Instance != null) 
      { 
       try 
       { 
        return (Instance.WindowHandles != null); // allways returns true if browser instance exist or thrown error 
       } 
       catch (Exception e) 
       { 
        return false; 
        // means that browser was closed by user 
       } 
      } 
      return false; // means that it wasn't created yet or was closed by developer programmally 
     } 
    } 

您需要檢查3種情況:wasnt創建

  • 司機

    1. 司機被開發商
    2. 瀏覽器是由用戶關閉關閉,但driwer情況下仍然存在

    所有這些情況都使用此代碼進行檢查。

  • 相關問題