2017-05-12 12 views
0

Selenium JavaプログラムがをスローするIndexOutOfBoundsExceptionクロムで新しいタブを開くためにコードの下で実行されると例外が発生する。新しいタブを開いているときにSeleniumがIndexOutOfBoundsExceptionをスローする

Javaコード:

System.setProperty("webdriver.chrome.driver", "/Users/john/Desktop/chromedriver"); 
        WebDriver driver = new ChromeDriver(); 
        driver.manage().window().maximize(); 
        String baseUrl = "http://google"; 
        driver.get(baseUrl); 
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 

        ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); 
        driver.switchTo().window(tabs.get(1)); // switches to new tab 
        driver.get("https://www.facebook.com"); 

エラー:

Starting ChromeDriver 2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b) on port 48571 
Only local connections are allowed. 
May 12, 2017 12:54:14 AM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Detected dialect: OSS 
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 
    at java.util.ArrayList.rangeCheck(ArrayList.java:653) 
    at java.util.ArrayList.get(ArrayList.java:429) 
    at test.SeleniumTest.main(SeleniumTest.java:31) 
+0

配列に存在しないインデックスにアクセスしようとすると、java.lang.IndexOutOfBoundsExceptionが発生します。新しいタブが存在するかどうかを確認する必要がありますか? – kushal

+0

tabs.get(1)が原因ですか?エラーログにリストサイズが1だけ表示されるので、 – mhasan

+0

タブの.size()の結果は何ですか? – kushal

答えて

1

tabsの大きさは、可能な限り最高の0しているときに、位置1にアクセスしようと1です。

+0

指摘していただきありがとうございます。 – John

2

driver.switchTo().window(tabs.get(1));の行では例外が発生します。それは起こっている、なぜなら、最初のもの以外の窓が開いていないからです。

+0

それはタイプミスでした。指摘してくれてありがとう。 – John

関連する問題