不要使用 for-each 构造。它仅在迭代单个Iterable
/ 数组时才有用。您需要同时迭代List<WebElement>
和 数组。
// assert that the number of found <option> elements matches the expectations
assertEquals(exp.length, allOptions.size());
// assert that the value of every <option> element equals the expected value
for (int i = 0; i < exp.length; i++) {
assertEquals(exp[i], allOptions.get(i).getAttribute("value"));
}
OP改变他的问题后编辑:
假设您有一组预期值,您可以这样做:
String[] expected = {"GRAM", "OUNCE", "POUND", "MILLIMETER", "TSP", "TBSP", "FLUID_OUNCE"};
List<WebElement> allOptions = select.findElements(By.tagName("option"));
// make sure you found the right number of elements
if (expected.length != allOptions.size()) {
System.out.println("fail, wrong number of elements found");
}
// make sure that the value of every <option> element equals the expected value
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);
} else {
System.out.println("failed on: " + optionValue);
}
}
这段代码基本上完成了我的第一个代码所做的事情。唯一真正的区别是,现在您正在手动完成工作并将结果打印出来。
之前,我使用了 JUnit 框架类中的assertEquals()
静态方法。Assert
这个框架是编写 Java 测试的事实上的标准,assertEquals()
方法族是验证程序结果的标准方法。他们确保传递给方法的参数相等,如果不相等,则抛出AssertionError
.
无论如何,您也可以通过手动方式进行操作,没问题。