如何遍历数据表以检查数据表

时间:2018-03-12 05:26:42

标签: java cucumber

我对黄瓜中的dataTable有疑问。如果我有以下dataTable:

Then the following options are displayed
  | A          |
  | B          |
  | C          |

我想执行一个断言来迭代每个元素并检查它的文本是否与dataTable中的任何选项匹配。这是怎么做到的?

以下是我到目前为止:

    @Then("^the following options are displayed$")
    public void  the_following_options_are_displayed(DataTable options) throws Throwable {
        List<List<String>> data = options.raw();
        List<WebElement> optionsIcons = driver.findElements(By.className("options-icons"));

        for (WebElement optionsIcons : optionsIcon) {

            //Here is where I am stuck

            }

我正在努力实现给出的示例问题,因为这与一个类有关,所以只需要一点指导。

1 个答案:

答案 0 :(得分:0)

以下代码检查包含至少一个选项的所有元素。如果一个元素不包含任何这些选项,它将给出一个断言消息。

黄瓜特征

Then the following options are displayed 
        | option1 | optionText | 
        | option2 | optionText2 |
        | option3 |  optionText3| 

Java类

@And("^the following options are displayed$")
public void the_following_options_are_displayed(DataTable options) {
List<List<String>> data = options.raw();
List<WebElement> optionsIcons = driver.findElements(By.className("options-icons"));
int count = 0;
for (WebElement optionsIcon : optionsIcons) {
    count = 0;
    for (int i = 0; i < data.size(); i++) {

        if(optionsIcon.getText().contains(data.get(i).get(1))==true){
            count ++;

        }
    }
    Assert.assertTrue("There is no match found with these options", count!=0);

    }
}