在 for 循环中断言布尔集的更短方法
Shorter way to assert boolean set in for loop
有没有办法让下面的代码更简单更短?
boolean clicked = false;
for (WebElement anchor : anchorLinksForProducts) {
if (anchor.getAttribute("href").contains(id)) {
anchor.click();
clicked = true;
break;
}
}
Assert.assertTrue(clicked, "Could not find a valid product link with id : " + id);
流应该使代码更短:
Optional<WebElement> anchor =
anchorLinksForProducts.stream()
.filter(a -> a.getAttribute("href").contains(id))
.findFirst();
if (anchor.isPresent()) {
anchor.get().click();
} else {
fail("Could not find a valid product link with id : " + id);
}
对@Mureinik 回答的改进。
anchorLinksForProducts.stream()
.filter(a -> a.getAttribute("href").contains(id))
.findFirst()
.ifPresentOrElse(
WebElement::click,
() -> fail("Could not find a valid product link with id : " + id)
);
此代码中的开销略多,但流总是如此,如果它是测试代码则不是问题。
有没有办法让下面的代码更简单更短?
boolean clicked = false;
for (WebElement anchor : anchorLinksForProducts) {
if (anchor.getAttribute("href").contains(id)) {
anchor.click();
clicked = true;
break;
}
}
Assert.assertTrue(clicked, "Could not find a valid product link with id : " + id);
流应该使代码更短:
Optional<WebElement> anchor =
anchorLinksForProducts.stream()
.filter(a -> a.getAttribute("href").contains(id))
.findFirst();
if (anchor.isPresent()) {
anchor.get().click();
} else {
fail("Could not find a valid product link with id : " + id);
}
对@Mureinik 回答的改进。
anchorLinksForProducts.stream()
.filter(a -> a.getAttribute("href").contains(id))
.findFirst()
.ifPresentOrElse(
WebElement::click,
() -> fail("Could not find a valid product link with id : " + id)
);
此代码中的开销略多,但流总是如此,如果它是测试代码则不是问题。