Java 越界性感觉-为什么?

Java 越界性感觉-为什么?,java,selenium-webdriver,Java,Selenium Webdriver,我已经在论坛上读过关于OutofBoundException错误的文章,但不幸的是,我仍然不知道我的问题 String[] expected = new String[10]; //{"Acapulco","Frankfurt","London","New York","Paris","Portland","San Francisco","Seattle","Sydney","Zurich"}; expected[0] = "Acapulco"; expected[1]

我已经在论坛上读过关于OutofBoundException错误的文章,但不幸的是,我仍然不知道我的问题

String[] expected = new String[10];
    //{"Acapulco","Frankfurt","London","New York","Paris","Portland","San Francisco","Seattle","Sydney","Zurich"};
    expected[0] = "Acapulco";
    expected[1] = "Frankfurt";
    expected[2] = "London";
    expected[3] = "New York";
    expected[4] = "Paris";
    expected[5] = "Portland";
    expected[6] = "San Francisco";
    expected[7] = "Seattle";
    expected[8] = "Sydney";
    expected[9] = "Zurich";

    List<WebElement> allOptions = driver.findElements(By.name("fromPort"));

 // match the fromPort list value against the expected Array
    for (int i = 0  ; i < (expected.length); i++) {

         String optionValue = allOptions.get(i).getAttribute("value");

         if (optionValue.equals(expected[i])) {
             System.out.println("PASSED on: " + optionValue + " we had: "+ expected[i] );
         } 

         else {
             System.out.println("FAILED on: " + optionValue + " we expected: " + expected[i]);
         }
 }
    //close Firefox
    driver.close();

不知道,所以任何帮助都将不胜感激。顺便说一句,Java和Selenium还不太熟悉,问题是在获取等位基因列表时:

List<WebElement> allOptions = driver.findElements(By.name("fromPort"));
发生

检查您的请求或您的
条件以检查两个列表:

for (int i = 0  ; i < (expected.length) && i < allOptions.size(); i++) {
for(int i=0;i<(预期的.length)和&i
将用作列表索引的循环计数器与另一个列表的大小进行比较是不明智的。它非常容易出错。

似乎
allOptions
中只有一个条目。将循环条件修改为
i<(预期的.length)&&i
allOptions
是一个包含一个元素的
列表。第一次循环时,您有
allOptions.get(0)
,这很有效。第二次循环时,您有
allOptions.get(1)
,已经过了列表的末尾。好吧,这样做已经摆脱了OOBE-太棒了。但正如khelwood所说的-它只循环一次…有什么想法吗?为一个新问题打开一个新主题。
String optionValue = allOptions.get(i).getAttribute("value");
for (int i = 0  ; i < (expected.length) && i < allOptions.size(); i++) {