title: Closing Browser After Failed Test
body: <p>I am running tests with WebDriver, when a test fails, the browser does not close. On a Windows machine this is a huge problem because I then have several instances of the IEDriver still running in the background. </p>
  
  <p>I have tried a try/catch statement which doesn't seem to work either. If the test fails the browser still remains open. Any help would be greatly appreciated.</p>
  
  <p>The try catch statement looks something like this:</p>
  
  <pre><code>try
  {
     Assert.something(something something dark side);
     driver.quit();
  }
  catch(Exception e)
  {
     System.out.println(e)
     driver.quit();
  }
  </code></pre>
  
  <p>My complete code is below:</p>
  
  <pre><code>public class ClickAddMedication 
  {
  Browser browser = new Browser();
  
  public void addMedication(String driverName)
  {
      //Open Browser and navigate to page
      WebDriver driver = browser.getDriver(driverName);
      driver.manage().window().maximize();
      driver.get("http://someIP:8080/hmp_patient/index.html");
  
      //Click Add Medication button
      WebElement addBtn = driver.findElement(By.id("add-btn"));
      addBtn.click();
  
      //Verify Add Medication page has loaded successfully
      WebElement rxBtn = driver.findElement(By.className("icon-rx"));
      WebElement otcBtn = driver.findElement(By.className("icon-otc"));
      WebElement herbBtn = driver.findElement(By.className("icon-herb"));
  
      Assert.assertEquals(true, rxBtn.isDisplayed());
      Assert.assertEquals(true, otcBtn.isDisplayed());
      Assert.assertEquals(true, herbBtn.isDisplayed());
  
      driver.quit();
  
  }
  
  @Test(groups = {"functionalTests.FF"})
  public void test_AddMedication_FF()
  {
      addMedication("firefox"); 
  }
  @Test(groups = {"functionalTests.iOS"})
  public void test_AddMedication_iOS()
  {
      addMedication("iOS");
  }
  }
  </code></pre>
  
  <p>I run the tests with a testng.xml file and would like to have the browser close regardless of whether or not the test passes.</p>
  
  <p>Below is my <code>Browser</code> class:</p>
  
  <pre><code>public class Browser 
  {
  public WebDriver getDriver(String driverName)
  {
      WebDriver driver = null;
      if(driverName == "firefox")
      {
          driver = new FirefoxDriver();
      }
      else if(driverName == "chrome")
      {
          File chromeFile = new File ("C:/webdrivers/chromedriver.exe");
          System.setProperty("webdriver.chrome.driver", chromeFile.getAbsolutePath());
          driver = new ChromeDriver();
      }
      else if(driverName == "ie")
      {
          File ieFile = new File("C:/webdrivers/IEDriverServer.exe");
          System.setProperty("webdriver.ie.driver", ieFile.getAbsolutePath());
          driver = new InternetExplorerDriver();
      }
      else if(driverName == "iOS")
      {
          try 
          {
              driver = new RemoteWebDriver(new URL("http://localhost:3001/wd/hub"), DesiredCapabilities.ipad());
          } catch (MalformedURLException e) 
          {
  
              e.printStackTrace();
          }
      }
  
  
      return driver;
  
  }
  }
  </code></pre>