Selenium WD |如何将WebElement列表中的所有值复制到String列表中?

时间:2018-03-08 07:29:34

标签: java selenium arraylist

我有一份清单,我收集了不断变化的股票价格清单

  

列表listOfLastPrice1;

我知道这个清单并不是一成不变的,因为股票的价格并不是一成不变的。这意味着如果我现在打印它,并将在5分钟内再次打印,值将会改变。为什么?因为这是一个直接连接到DOM的WebElement列表。

我创建了第二个列表

  

ArrayList listCopyLastPrice1 = new ArrayList();

我想将WebElement列表中的所有值复制到String列表中。 我该怎么做?

我尝试了几次尝试,但没有成功

{{1}}

2 个答案:

答案 0 :(得分:1)

迭代WebElement列表并将值添加到String列表

List <WebElement> listOfLastPrice1;
listOfLastPrice1= driver.findElements(By.cssSelector("[data-column-name='last'][class*='pid']")); 

List<String> listCopyLastPrice1 = new ArrayList<String>();

for (WebElement element : listOfLastPrice1) {
    listCopyLastPrice1.add(element.getText());
}

编辑:

从Java 1.8开始,您可以使用Stream API将WebElement的列表更改为String列表,如下所示:

List<String> listOfLastPrice1WithStrings = driver.findElements(By.cssSelector("[data-column-name='last'][class*='pid']"))
    .stream() 
    .map(x -> x.getText())
    .collect(Collectors.toList());

答案 1 :(得分:1)

,您无法在字符串的列表中复制 WebElement 列表 类型。试图提出ClassCastException。但您可以在字符串类型列表中存储 WebElements 的任何属性(例如id,name,innerText,innerHTML),如下所示:

$xmlFile.start.'start.List'