Webdriver - How to check if browser still exists or still open?

After calling driver.close() the value of driver is set to

FirefoxDriver: firefox on WINDOWS(4b4ffb1e-7c02-4d9c-b37b-310c771492ac)

But if you call driver.quit() then it sets the value of driver to

FirefoxDriver: firefox on WINDOWS (null)

So if you're checking the browser window after calling driver.quit() then you will be able to know by below implementation.

WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.quit();              
if(driver.toString().contains("null"))
{

System.out.print("All Browser windows are closed ");
}
else
{
//open a new Browser
}

public void isBrowserWindowOpen(WebDriver dr){
    RemoteWebDriver driver = (RemoteWebDriver) dr;
    try {
        driver.getWindowHandles();
    } catch (NullPointerException | NoSuchSessionException e) {
        //open a new Browser
    }
}

I actively use this for Chrome. At the same time, since I run the browsers with cmd title, I can close the command line to get rid of excessive loads.

from selenium.common.exceptions import WebDriverException

while True:
    try:
        #do somethings
    except selenium.common.exceptions.WebDriverException as e:
        if 'chrome not reachable' in str(e):
            os.system('taskkill /FI "WindowTitle eq YourTitleIfExistsOrDeleteThisLine*" /T /F')

There is no api for it. The best one, you can do is call toString method, which returns a string like this:

SafariDriver . . . null

Then you can call contains method, which does check in the string null is there.

Note that this will work only if the quit is been called.