Below code i was used in Selenium Eclipse, But i get a error shown in this line “String childid = it.next();” I am unable to traverse parent window to child window
JavaScript
x
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.chrome.ChromeDriver;
public class HandleMultipleWindows {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","C:\Users\vinay\Desktop\driver\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://accounts.google.com/signin");
System.out.println("Before switching");
System.out.println(driver.getTitle());
driver.findElement(By.xpath("//*[text()='Learn more']")).click();
Set<String> ids =driver.getWindowHandles();
Iterator<String> it = ids.iterator();
String parentid = it.next();
String childid = it.next();
driver.switchTo().window(childid);
System.out.println("After switching");
System.out.println(driver.getTitle());
driver.switchTo().window(parentid);
System.out.println("Switch back to parent id");
System.out.println(driver.getTitle());
}
}
Advertisement
Answer
You should get Parent window in a right way:
JavaScript
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","C:\Users\vinay\Desktop\driver\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://accounts.google.com/signin");
System.out.println("Before switching");
System.out.println(driver.getTitle());
driver.findElement(By.xpath("//*[text()='Learn more']")).click();
String parentid =driver.getWindowHandle();
Set<String> ids =driver.getWindowHandles();
Iterator<String> it= ids.iterator();
//Here you can iterate using Iterator if you have more than one child, but once you have only one you can still use next once
String childid =it.next();
driver.switchTo().window(childid);
System.out.println("After switching");
System.out.println(driver.getTitle());
driver.switchTo().window(parentid);
System.out.println("Switch back to parent id");
System.out.println(driver.getTitle());
}
}