Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in DevOps and Agile by (19.7k points)

I need to check a collection of Page Objects to see, for each one, if quit() has been called on its WebDriver.

I've written the following method to check a WebDriver's state:

public static boolean hasQuit(WebDriver driver) {

        try {

            driver.getTitle();

            return false;

        } catch (SessionNotFoundException e) {

            return true;

        }

}

Here's the problem: I don't like having to throw and catch an exception to discover the truth of a boolean, but it seems I have no choice since the WebDriver API doesn't provide a method to check if the driver has quit.

So my question is, is there a better way to check if a WebDriver has quit?

I found a similar (and more general) question here, but the question did not have any code that had been tried, and the only answer was to always set the WebDriver to null after quitting (which I don't necessarily have control over).

1 Answer

0 votes
by (62.9k points)

If, the quit() method has been called, the driver.toString() method returns null:

>>> FirefoxDriver: firefox on XP (null))

Otherwise, it returns a hashcode of the object: 

>>> FirefoxDriver: firefox on XP (9f897f52-3a13-40d4-800b-7dec26a0c84d)

so you could check for null when assigning a boolean:

boolean hasQuit = driver.toString().contains("(null)");

I hope this helps!

If you are interested to learn Selenium on a much deeper level and want to become a professional in the testing domain, you need to enroll in Selenium training institute!

Browse Categories

...