以下のコードを使用して、複数のウィンドウを処理しています("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/");
}
}
これは私の簡単なコードです。これはGoogle Chromeでも問題なく動作します。 firefoxで試行しているときに同じコードを入力してください。これは、行番号53の例外"java.lang.ArrayIndexOutOfBoundsException"
以下です。
誰でもこの問題を解決できますか?
私たちにライン#53を見せてください。 – BVengerov
あなたの返事をありがとう、ここに行番号53です:String win3 =(String)set.toArray()[0]; –
動作は同じですか?つまり、すべてのポップアップがFFのポップアップとして開きますか? – BVengerov