How to Switch to New Tab in Selenium WebDriver
In Selenium, you switch to a new tab by getting all window handles with
driver.getWindowHandles() and then using driver.switchTo().window(handle) to switch to the desired tab. Usually, you save the original tab handle, open a new tab, then switch to the new tab handle.Syntax
To switch to a new tab in Selenium, use these steps:
driver.getWindowHandles(): Gets all open window/tab handles as a set.driver.switchTo().window(handle): Switches the driver's focus to the window/tab with the given handle.
You typically store the original tab's handle, open a new tab, then switch to the new tab's handle.
java
Set<String> handles = driver.getWindowHandles(); for (String handle : handles) { driver.switchTo().window(handle); // Now driver controls this tab }
Example
This example opens a new tab by clicking a link, then switches to the new tab to perform actions.
java
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import java.util.Set; public class SwitchTabExample { public static void main(String[] args) throws InterruptedException { WebDriver driver = new ChromeDriver(); driver.get("https://www.example.com"); // Save original tab handle String originalHandle = driver.getWindowHandle(); // Assume clicking this link opens a new tab driver.findElement(By.linkText("More information...")) .click(); // Wait for new tab to open Thread.sleep(2000); // Get all window handles Set<String> handles = driver.getWindowHandles(); // Switch to new tab for (String handle : handles) { if (!handle.equals(originalHandle)) { driver.switchTo().window(handle); break; } } // Now driver controls new tab System.out.println("Title of new tab: " + driver.getTitle()); // Close new tab and switch back driver.close(); driver.switchTo().window(originalHandle); driver.quit(); } }
Output
Title of new tab: IANA — IANA-managed Reserved Domains
Common Pitfalls
Common mistakes when switching tabs include:
- Not saving the original tab handle before opening a new tab, making it hard to switch back.
- Assuming the new tab handle is always last; window handles are unordered sets.
- Not waiting for the new tab to open before switching, causing errors.
- Forgetting to close tabs or switch back, which can cause test failures.
java
/* Wrong way: Assuming new tab handle is last */ Set<String> handles = driver.getWindowHandles(); String newTab = handles.toArray()[handles.size() - 1].toString(); driver.switchTo().window(newTab); /* Right way: Compare handles to original */ String original = driver.getWindowHandle(); for (String handle : handles) { if (!handle.equals(original)) { driver.switchTo().window(handle); break; } }
Quick Reference
| Action | Code Snippet | Description |
|---|---|---|
| Get all tabs | Set | Retrieve all open window/tab handles. |
| Get current tab | String original = driver.getWindowHandle(); | Get handle of current tab. |
| Switch tab | driver.switchTo().window(handle); | Switch focus to tab with given handle. |
| Close tab | driver.close(); | Close current tab. |
| Switch back | driver.switchTo().window(original); | Return focus to original tab. |
Key Takeaways
Always save the original tab handle before opening a new tab.
Use driver.getWindowHandles() to get all open tabs and find the new one by exclusion.
Switch to the new tab using driver.switchTo().window(handle) before interacting with it.
Wait briefly after opening a new tab to ensure it loads before switching.
Close tabs and switch back to keep tests clean and stable.