2012-07-26 152 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情况下仍然存在

    所有这些情况都使用此代码进行检查。

  • 相关问题