我正在使用下面的代码来处理使用硒webdriver的多个窗口并获取"java.lang.ArrayIndexOutOfBoundsException"
异常。请检查下面我简单的代码:使用webdriver处理多个窗口时发生“java.lang.ArrayIndexOutOfBoundsException”异常
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/");
}
}
这是我简单的代码,这是完美的谷歌浏览器工作正常。同样的代码,当我尝试在Firefox中,它给了我行号53以下的例外"java.lang.ArrayIndexOutOfBoundsException"
。
任何人都可以解决这个问题吗?
向我们展示#53行。 – BVengerov
感谢您的回复,这里是行号53:String win3 =(String)set.toArray()[0]; –
行为是否相同?也就是说,每个弹出窗口都会在FF中弹出吗? – BVengerov