我使用 selenium 訪問了一個 web 表,并將所有表行收集到一個串列中:
List<WebElement> nameColumn = driver.findElements(By.xpath("//tbody/tr/td[2]/span"));
我從元素中回圈遍歷串列getText并將結果存盤在String:
for (WebElement tdElement : nameColumn) {
String records = tdElement.getText();
//To be able to filter the result so as to collect words starting with a particular pattern, I converted the `String` to a `List`:
List<String> myList = new ArrayList<>(Arrays.asList(records.split(",")));
System.out.println(myList);
}
輸出:
["test1"]
["testme"]
["demoit"]
["sampleit"]
["johndoe"]
["testeurope"]
["testusa"]
["testitaly"]
["gomali"]
Using stream(),我嘗試收集以下開頭的元素test:
List<String> filteredFields = myList.stream().filter(field -> field.startsWith("test")).collect(Collectors.toList());
System.out.println(filteredFields);
輸出:
[]
[]
[]
[]
[]
[]
[]
[]
[]
空串列被回傳。為什么過濾器可以是空的?可能是因為將 a 轉換為StringaList嗎?我如何實作收集所有元素startsWith test?
整個代碼塊如下所示:
public void demo() throws InterruptedException {
List<WebElement> nameColumn = driver.findElements(By.xpath("//tbody/tr/td[2]/span"));
for (WebElement tdElement : nameColumn) {
String records = tdElement.getText();
//convert to List
List<String> myList = new ArrayList<>(Arrays.asList(records.split(",")));
System.out.println(myList);
//Get elements that start with test
List<String> filteredFields = myList.stream().filter(field -> field.startsWith("test")).collect(Collectors.toList());
System.out.println(filteredFields);
}
}
uj5u.com熱心網友回復:
您的陣列串列包含帶引號的單詞,即" test1 "。
這就是為什么您不應該直接使用field.startswith. 但是您應該先洗掉報價,然后檢查field.startswith.
請在下面使用:
List<String> filteredFields = myList.stream().filter(field -> field.substring(1, field.length()-1).startsWith("test")).collect(Collectors.toList());
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/475679.html
上一篇:FileNotFoundError:[Errno2]將檔案放入hdfs時沒有這樣的檔案或目錄
下一篇:為什么我們需要在呼叫executeScript方法之前將WebDriver實體型別轉換為JavascriptExecutor?
