-1

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?

Shubham Jain
  • 16,610
  • 15
  • 78
  • 125

1 Answers1

0

I dont know why this question was down voted. But you could have given a proper line number info. Anyway the possible issue might be any one of the Window title from the parent, win2 and win3 would have been same and Set doesnot allow to store duplicate values. In your code the remove() method would have removed the expected one and turned into empty array. It is better to use ArrayList instead of it for avoiding duplicate filter problem.