不要使用for-each構造。它僅在迭代單個Iterable
/數組時有用。您需要同時迭代List<WebElement>
和陣列。 OP的後
// 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"));
}
編輯改變了他的問題了一下:
假設你有預期值的數組,你可以這樣做:
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框架的Assert
類中的assertEquals()
靜態方法。此框架是編寫Java測試的事實標準,方法系列是驗證程序結果的標準方法。他們確保傳遞給該方法的參數是相等的,如果不是,他們會拋出一個AssertionError
。
無論如何,你也可以用手動的方式來做到這一點,沒問題。
什麼是打印效果? –