Switching on tab from a link
When Selenium Webdriver object instantiated then Webdriver assigns an alphanumeric id to each window.This unique alphanumeric id is called window handle.Each window has a unique ID so that selenium can differentiate when it is switching controls from one window to other.
Set <String> windows =driver.getWindowHandles();
//Set will store the multiple windows
System.out.println(windows.size());
//Print the size of windows
Iterator<String> it = windows.iterator();
//iterate through your windows
while (it.hasNext()){
String parentwindow = it.next();
System.out.println("This is first window id "+parentwindow);
//This will print the id of first window.
String childwindow = it.next();
System.out.println("this is second window id "+childwindow);
//This will print the id of second window or Tab
When we are working with selenium sometime we get a challenge like if we click on a link then we switch to a different window or pop up and if we have to enter in the pop up and enter in that page then we need to switch on that pop up.
Here I have given an example of in which we are clicking on a link and switched on different tab and enter in that page.
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class MultipleWindows {
public static void main(String str[]) throws InterruptedException{
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.get("http://hdfc.com/customer-login");
//go to this hdfc url
driver.findElement(By.xpath("//a[contains(text(), 'CUSTOMER LOGIN')]")).click();
//Perform the click operation that opens new window
Thread.sleep(5000);
//Wait for 5 sec
Set <String> windows =driver.getWindowHandles();
System.out.println(windows.size());
//Print the size of windows
Iterator<String> it = windows.iterator();
//iterate through your windows
while (it.hasNext()){
String parentwindow = it.next();
System.out.println("This is first window id "+parentwindow);
String childwindow = it.next();
System.out.println("this is second window id "+childwindow);
driver.switchTo().window(childwindow);
//Switch to child window
driver.findElement(By.xpath("//*[@id='tb_usr']")).sendKeys("Seleniumgyan123");
Thread.sleep(5000);
driver.close();
//close the child window
Thread.sleep(5000);
driver.switchTo().window(parentwindow);
//switch to parent window
String parenttitle = driver.findElement(By.xpath("//h2[contains(text(), 'ONLINE ACCESS FOR EXISTING CUSTOMERS')]")).getText();
System.out.println(parenttitle);
//print the title of parent window
}
}}



