如何迭代多个列表<;WebElement>;在selenium/Java中
我在一个页面中有以下WebElement列表如何迭代多个列表<;WebElement>;在selenium/Java中,java,selenium,Java,Selenium,我在一个页面中有以下WebElement列表 @FindBy(xpath="a") private List<WebElement> generalList ; @FindBy(xpath="b") private List<WebElement> eventList ; @FindBy(xpath="c") private List<WebElement> additionalList ; 在Java 8中,您可以尝试使用以下方法:- gener
@FindBy(xpath="a")
private List<WebElement> generalList ;
@FindBy(xpath="b")
private List<WebElement> eventList ;
@FindBy(xpath="c")
private List<WebElement> additionalList ;
在Java 8中,您可以尝试使用以下方法:-
generalList.stream().forEach(elem -> elem.clear());
eventList.stream().forEach(elem -> elem.clear());
additionalList.stream().forEach(elem -> elem.clear());
或者连接所有这些列表并尝试以下方式:
Stream.of(generalList, eventList, additionalList).flatMap(Collection::stream).forEach(elem -> elem.clear());
番石榴:
for (WebElement type : Iterables.concat(generalList, eventList, additionalList)) {
type.clear();
}
使用Java 8:
Stream.of(generalList, eventList, additionalList)
.flatMap(List::stream)
.forEach(WebElement::clear);
您可以创建一个助手函数
void clearAll(List<WebElement>... f) {
Arrays.stream(f).forEach((li)->{li.forEach(WebElement::clear);});
}
void clearAll(列表…f){
Arrays.stream(f.forEach((li)->{li.forEach(WebElement::clear);});
}
并像
clearAll(generalList、eventList、additionalList)那样调用它代码>别担心。我因使用Java8特性而在核心java问题中被否决。我猜有些人不喜欢在JavaI中引入函数式编程,我并没有投票反对你。它完全符合这个人的要求。我刚才提到有些人不喜欢Java 8特性的答案。我对你的原始答案投了反对票,因为它完全忽略了OP避免重复陈述的意图。@SaurabhGaur我试图指出错误或误解,但你似乎忽视了一个问题,那就是推动你的lambda…如果我想添加一些东西,而不是澄清我如何才能做到这一点。字符串[]名称={“lastName”,“firstName”};
void clearAll(List<WebElement>... f) {
Arrays.stream(f).forEach((li)->{li.forEach(WebElement::clear);});
}