索引超出边界异常 - 比较两(2)个字符串列表

时间:2017-11-05 17:04:21

标签: java junit cucumber gherkin

我正在比较两个字符串列表,它们已成功完成比较,但之后,我得到了一个 -

java.lang.IndexOutOfBoundsException: Index: 7, Size: 7
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at java.util.Collections$UnmodifiableList.get(Collections.java:1309)
at com.cucumber.CucumberWebGui.StepDefinitions.tableHeaders(StepDefinitions.java:254)
at ✽.Then table with id "content" has header values of(tableHeader.feature:9)

我从黄瓜特征文件传入的第一个列表。我从本网站的表格标题中收集的第二篇文章 - “http://toolsqa.com/automation-practice-table/

我已经尝试更改for循环,但它没有帮助。我已经在Stack Overflow上阅读了其他人的相同问题,但我无法解决它。 我不知道该怎么做。

以下是代码和功能文件 -

代码 -

@SuppressWarnings("deprecation")
@Then("^table with id \"([^\"]*)\" has header values of$")
public void tableHeaders(String id, DataTable table) {

    java.util.List<java.util.List<String>> expectedHeaders = table.raw();

    WebElement container = driver.findElement(By.id(id));
    List<WebElement> allHeaders = container.findElements(By.tagName("th"));

    List<String> actualHeaders = new ArrayList<String>();
    for (WebElement header : allHeaders) {
        actualHeaders.add(header.getText());
    }

    for (int i = 0; i < actualHeaders.size(); i++) {
        Assert.assertEquals(expectedHeaders.get(i).get(0), actualHeaders.get(i));
    }
}

功能文件 -

Scenario: Test Table Header assertion 
Then table with id "content" has header values of 

    | Structure |
    | Country | 
    | City |
    | Height | 
    | Built | 
    | Rank |
    | … |

1 个答案:

答案 0 :(得分:1)

可能是因为expectedHeaders的元素少于actualHeaders