How to close the entire browser window if webDriver is active?

In my batch execution, several browsers with several tabs for the first scenario open. I wanted to close all of these browsers before starting the second script.

Driver.close()just closes one browser tab. Driver.quit()closes all browsers and also ends the session WebDriver. Thus, I cannot start batch execution. Please provide a solution for this.

+14
source share
3 answers

The explanation below should explain the difference between the driver.close and driver.quit methods in WebDriver. Hope you find this helpful.

driver.close and driver.quit are two different methods for closing a browser session in Selenium WebDriver.

Understanding both of them and knowing when to use each method is important when performing the test. So I tried to shed light on both of these methods.

driver.close - , . driver.quit , driver.close , , - , driver.close, -.

driver.quit - driver.dispose , WebDriver .

driver.dispose - , WebDriver, - . , .

: driver.quit , . WebDriver. driver.quit , WebDriver . .

............

. , , .

String homeWindow = driver.getWindowHandle();
Set<String> allWindows = driver.getWindowHandles();

//Use Iterator to iterate over windows
Iterator<String> windowIterator =  allWindows.iterator();

//Verify next window is available
while(windowIterator.hasNext())
{
    //Store the Recruiter window id
    String childWindow = windowIterator.next();
}

//Here we will compare if parent window is not equal to child window 
if (homeWindow.equals(childWindow))
{
    driver.switchTo().window(childWindow);
    driver.close();
}

if (homeWindow.equals(childWindow))
{
    driver.switchTo().window(childWindow);
    driver.close();
}

, . , , . , , .

+6

driver.close() driver.quit()

driver.close() driver.quit() - Selenium WebDriver. , , .

driver.close() - , .

driver.quit() - driver.dispose, WebDriver .

driver.quit(), . WebDriver. driver.quit , WebDriver , . .

driver.close(), .

- , driver.close(), webdriver. Webdriver .

+33

This code closes all open windows, and then returns control to the main window.

public static void switchTab() {            
    try {
        Set<String> windows = webDriver.getWindowHandles();
        Iterator<String> iter = windows.iterator();
        String[] winNames=new String[windows.size()];
        int i=0;
        while (iter.hasNext()) {
            winNames[i]=iter.next();
            i++;
        }

        if(winNames.length > 1) {
            for(i = winNames.length; i > 1; i--) {
                webDriver.switchTo().window(winNames[i - 1]);
                webDriver.close();
            }
        }
        webDriver.switchTo().window(winNames[0]);
    }
    catch(Exception e){         
        e.printStackTrace();
    }
}
+1
source

Source: https://habr.com/ru/post/1627910/


All Articles