Bird
Raised Fist0
Selenium Javatesting~8 mins

Closing browser (close vs quit) in Selenium Java - Framework Approaches Compared

Choose your learning style10 modes available
Framework Mode - Closing browser (close vs quit)
Folder Structure of Selenium Java Test Framework
src/
 └── test/
     └── java/
         ├── com/
         │   └── example/
         │       ├── pages/
         │       │    └── LoginPage.java
         │       ├── tests/
         │       │    └── LoginTest.java
         │       ├── utils/
         │       │    └── WebDriverManager.java
         │       └── config/
         │            └── ConfigReader.java
 └── resources/
     └── testdata/
         └── testdata.csv
Test Framework Layers
  • Driver Layer: Manages WebDriver instances, browser setup, and teardown (e.g., WebDriverManager.java).
  • Page Objects: Classes representing web pages with locators and actions (e.g., LoginPage.java).
  • Tests: Test classes using test frameworks like TestNG or JUnit to run test cases (e.g., LoginTest.java).
  • Utilities: Helper classes for common functions like reading configs, waits, screenshots.
  • Configuration: Files and classes to manage environment settings, browser types, credentials.

Closing Browser Methods:

  • driver.close(): Closes the current browser window. If multiple windows are open, others stay open.
  • driver.quit(): Closes all browser windows and ends the WebDriver session cleanly.
Configuration Patterns
  • Environment Properties: Use config.properties to set URLs, browser types, timeouts.
  • Browser Selection: Pass browser name as a parameter or from config to WebDriverManager to launch desired browser.
  • Credentials: Store securely in config files or environment variables, accessed via ConfigReader.
  • Closing Browser: Decide in test teardown whether to use close() or quit() based on test scope.
Test Reporting and CI/CD Integration
  • Use TestNG or JUnit reports to show test pass/fail results.
  • Integrate with CI tools like Jenkins or GitHub Actions to run tests automatically on code changes.
  • Ensure WebDriver sessions are properly closed with quit() to avoid resource leaks in CI environments.
  • Generate HTML or XML reports for easy review.
Best Practices for Closing Browser in Selenium Java Framework
  1. Always use driver.quit() in test teardown: It closes all windows and ends the session, freeing resources.
  2. Use driver.close() only when handling multiple windows: To close a specific window without quitting the session.
  3. Implement browser closing in a centralized place: For example, in an @AfterMethod or @AfterClass annotated method in TestNG.
  4. Handle exceptions during closing: Wrap close/quit calls in try-catch to avoid test failures due to closing errors.
  5. Do not leave browser windows open: This can cause memory leaks and flaky tests.
Self-Check Question

Where in this folder structure would you add the code to properly close the browser after each test?

src/test/java/com/example/tests/LoginTest.java

Or better, in a base test class or utility under tests/ or utils/ to reuse the closing logic.

Key Result
Use driver.quit() in test teardown to close all browser windows and end the WebDriver session cleanly.

Practice

(1/5)
1. What does the close() method do in Selenium WebDriver?
easy
A. Closes the current browser window or tab only
B. Closes all browser windows and ends the WebDriver session
C. Keeps the browser open but clears cookies
D. Minimizes the browser window

Solution

  1. Step 1: Understand the purpose of close()

    The close() method is designed to close only the current browser window or tab that the WebDriver is controlling.
  2. Step 2: Differentiate from quit()

    Unlike quit(), which closes all windows and ends the session, close() affects only one window or tab.
  3. Final Answer:

    Closes the current browser window or tab only -> Option A
  4. Quick Check:

    close() closes one window [OK]
Hint: Close closes one window; quit closes all [OK]
Common Mistakes:
  • Confusing close() with quit()
  • Thinking close() ends the WebDriver session
  • Assuming close() clears cookies
2. Which of the following is the correct syntax to close all browser windows and end the WebDriver session in Java Selenium?
easy
A. driver.close();
B. driver.quit();
C. driver.exit();
D. driver.shutdown();

Solution

  1. Step 1: Recall the method to end WebDriver session

    The method quit() is used to close all browser windows and end the WebDriver session.
  2. Step 2: Check syntax correctness

    The correct syntax in Java Selenium is driver.quit();. Other options like exit() or shutdown() do not exist in WebDriver API.
  3. Final Answer:

    driver.quit(); -> Option B
  4. Quick Check:

    Use quit() to close all windows [OK]
Hint: Use quit() to close all windows and end session [OK]
Common Mistakes:
  • Using close() instead of quit() to end session
  • Using non-existent methods like exit() or shutdown()
  • Missing parentheses in method call
3. Consider the following Java Selenium code snippet:
WebDriver driver = new ChromeDriver();
driver.get("https://example.com");
driver.close();
driver.get("https://google.com");

What will happen when this code runs?
medium
A. The browser opens example.com and google.com in the same tab without closing
B. The browser opens example.com, closes the tab, then opens google.com in a new window
C. The browser opens example.com and google.com in two tabs without closing any
D. The browser opens example.com, closes the tab, then throws an exception on the next get() call

Solution

  1. Step 1: Analyze the effect of driver.close()

    The close() method closes the current browser window or tab but does not end the WebDriver session. However, if it is the only window, the session becomes invalid.
  2. Step 2: Understand the next get() call after close()

    After closing the only window, calling driver.get() will cause a NoSuchWindowException or similar because there is no open window to navigate.
  3. Final Answer:

    The browser opens example.com, closes the tab, then throws an exception on the next get() call -> Option D
  4. Quick Check:

    close() closes window; next get() fails if no window [OK]
Hint: Close closes tab; next commands fail if no window open [OK]
Common Mistakes:
  • Assuming get() opens new window after close()
  • Thinking close() ends session like quit()
  • Ignoring exceptions after closing last window
4. You have this Java Selenium code:
driver.close();
driver.quit();

What is the problem with this code?
medium
A. No problem; calling close() before quit() works without throwing exceptions
B. close() and quit() do the same thing, so one is redundant
C. Calling quit() before close() is required to avoid errors
D. Calling close() before quit() may cause quit() to throw an exception if no windows remain

Solution

  1. Step 1: Understand the effect of close()

    Calling close() closes the current window. If it is the last window, no windows remain open, but the WebDriver session remains active.
  2. Step 2: Analyze quit() after close()

    Calling quit() after close() safely terminates the session even with no windows left; no exception is thrown.
  3. Final Answer:

    No problem; calling close() before quit() works without throwing exceptions -> Option A
  4. Quick Check:

    close() then quit() succeeds [OK]
Hint: close() followed by quit() is safe; no exceptions [OK]
Common Mistakes:
  • Thinking close() before quit() throws exception
  • Confusing close() and quit() effects
  • Believing quit() must precede close()
5. You want to close only the current tab but keep the WebDriver session active to open a new tab later. Which method should you use and why?
hard
A. Use driver.quit() because it closes all tabs and ends session cleanly
B. Use driver.quit() and then create a new WebDriver instance
C. Use driver.close() because it closes only the current tab and keeps session alive
D. Use driver.close() and then call driver.quit() immediately

Solution

  1. Step 1: Identify the requirement to keep session alive

    To keep the WebDriver session active, you must not call quit() because it ends the session and closes all windows.
  2. Step 2: Choose method that closes only current tab

    The close() method closes only the current tab or window but keeps the WebDriver session alive, allowing further commands like opening new tabs.
  3. Final Answer:

    Use driver.close() because it closes only the current tab and keeps session alive -> Option C
  4. Quick Check:

    close() closes tab; quit() ends session [OK]
Hint: Close closes tab; quit ends session completely [OK]
Common Mistakes:
  • Using quit() and losing session
  • Calling quit() then expecting to open new tabs
  • Confusing close() with quit() effects
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard