Selenium handles multiple windows using window handles — unique string IDs for each open window/tab.
Get all window handles:
Java
String mainWindow = driver.getWindowHandle();
Set<String> allWindows = driver.getWindowHandles();
Switch to a new window:
Java
driver.findElement(By.linkText("Open New Window")).click();
String mainHandle = driver.getWindowHandle();
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(mainHandle)) {
driver.switchTo().window(handle);
break;
}
}
System.out.println("New window title: " + driver.getTitle());
driver.switchTo().window(mainHandle);
Helper method:
Java
public void switchToNewWindow(WebDriver driver, String mainHandle) {
for (String handle : driver.getWindowHandles()) {
if (!handle.equals(mainHandle)) {
driver.switchTo().window(handle);
return;
}
}
}
Close new window and return:
Java
driver.close();
driver.switchTo().window(mainHandle);
