I am using below code to handle multiple window using selenium webdriver and getting "java.lang.ArrayIndexOutOfBoundsException"
exception . Please check my simple code below :
public class Window_handling {
WebDriver driver;
WebDriverWait wait=null;
String baseurl= "http://www.w3schools.com/html/html_links.asp";
@BeforeClass
public void beforeClass() {
//System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
//driver=new ChromeDriver();
driver=new FirefoxDriver();
driver.get(baseurl);
driver.manage().window().maximize();
wait=new WebDriverWait(driver, 5);
}
@Test
private void multiple_windowhandle() throws InterruptedException{
//parent pop-up
System.out.println("window size is ="+driver.getWindowHandles().size());
String parent=driver.getWindowHandle();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Exercise 1 »")));
driver.findElement(By.linkText("Exercise 1 »")).click();
Thread.sleep(5000);
//handling first pop-up
System.out.println("window size is ="+driver.getWindowHandles().size());
Set<String> set=driver.getWindowHandles();
set.remove(parent);
String win2=(String)set.toArray()[0];
Thread.sleep(5000);
//handling second pop-up
wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Exercise 2 »")));
driver.findElement(By.linkText("Exercise 2 »")).click();
System.out.println("window size is ="+driver.getWindowHandles().size());
set=driver.getWindowHandles();
set.remove(parent);
set.remove(win2);
String win3=(String)set.toArray()[0];
Thread.sleep(5000);
driver.switchTo().window(win3);
driver.get("http://www.google.com/");
}
}
This is my simple code and this is perfectly working fine in Google Chrome. Same code when I am trying in firefox it given me below exception "java.lang.ArrayIndexOutOfBoundsException"
in line number 53.
Can anyone solve this problem?