Node JS driver.findElements(by.className(' classname')。getText()抛出错误

时间:2018-05-27 18:05:28

标签: javascript node.js selenium

我正在尝试从Selenium测试中得到反馈,而我最接近解决方案的是:

driver.findElement(By.className('classname')).getText();

但要使其有效,我必须找到所有具有相同类名的元素,所以我尝试将其更改为:

driver.findElements(By.className('classname')).getText();

但是我收到了错误:

  

TypeError:driver.findElements(...)。getText不是函数

有关如何修复它的建议或具有等效功能的代码的想法吗?

3 个答案:

答案 0 :(得分:0)

问题是.findElements()返回一个集合,而.getText()对集合不起作用,只对单个元素起作用。如果你想要每个元素的文本,你需要遍历集合并在循环内的每个元素上获取文本。

如果您需要有关循环收集的更多信息,请参阅this reference

答案 1 :(得分:0)

由于findElements返回一个集合,您可以使用map方法遍历集合并获取所有元素的文本。

let array_of_elements = driver.findElements(By.className('some_classname'));

//get the text from the elements in an another array

let text_of_elements = array_of_elements.map((array_of_text,index,array_of_elements)=>{
   return array_of_text.getText();
});

了解地图方法here

答案 2 :(得分:-1)

您可以使用以下方式获取文字集:

List<WebElement> findData = driver.findElements("******");
for (WebElement webElement : findData) {
                    String getValueofString = webElement.getText();                 
}