2016-08-16 28 views
2

,我有以下WebElement列表頁面中的我如何遍歷多個列表<WebElement>硒/ Java的

@FindBy(xpath="a") 

private List<WebElement> generalList ; 

@FindBy(xpath="b") 

private List<WebElement> eventList ; 

@FindBy(xpath="c") 

private List<WebElement> additionalList ; 

我想重複上述各列表項,並通過循環中使用明確的,而不是寫的以下目前工作

for(WebElement type:generalList) 
type.clear(); 
for(WebElement type:eventList) 
type.clear(); 
for(WebElement type:additionalList) 
type.clear(); 

回答

0

在Java 8路,你可以嘗試如下使用Stream: -

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()); 
+0

請解釋投票的理由以及... –

+0

不要擔心它。我一直在Java核心問題中投票表決使用Java 8功能。猜猜一些人不喜歡Java中的函數式編程的介紹 – Grasshopper

+0

@Grasshopper抱歉,但它並不清楚你的理由? –

0

隨着番石榴:

for (WebElement type : Iterables.concat(generalList, eventList, additionalList)) { 
    type.clear(); 
} 

與Java 8:

Stream.of(generalList, eventList, additionalList) 
     .flatMap(List::stream) 
     .forEach(WebElement::clear); 
+0

爲什麼downvote? – shmosel

+0

它按預期工作。謝謝 – user2410266

0

你可以創建一個輔助函數

void clearAll(List<WebElement>... f) { 
     Arrays.stream(f).forEach((li)->{li.forEach(WebElement::clear);}); 
} 

並稱之爲clearAll(generalList, eventList, additionalList);