如何迭代多个列表<;WebElement>;在selenium/Java中

如何迭代多个列表<;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

我在一个页面中有以下WebElement列表

@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);});
}