如何处理findElements结果?

时间:2016-05-07 19:07:33

标签: javascript selenium-webdriver webdriverjs

代码1

resultsBoard.findElements(By.css('mySelector')).then(function(elements) {
  for (var idx = 0; idx < elements.length; idx++) {
    elements[idx].getText().then(printText(text));
  }
});

代码2

{{1}}

代码1效果很好,并检索与我的选择器匹配的所有元素的文本。 代码2给了我一个

  

ReferenceError:未定义文本

有什么区别?为什么会这样?

2 个答案:

答案 0 :(得分:2)

第二个片段添加了立即调用函数(/students/students.txt)的调用括号,期望已经定义printText。这些括号不在第1个片段中。

text

要提供命名函数作为参数,您只需将其名称用作变量:

elements[idx].getText().then(printText(text));

// is equivalent to...

var _result = printText(text);
elements[idx].getText().then(_result);

答案 1 :(得分:1)

在第一个例子中:

elements[idx].getText().then(function(text) {
   console.log(text);
});

.then(function(text))部分实际上是为从getText()获取的数据命名(文本),因此您可以在下一行中使用它。你在第二个例子中没有这样做。

所以你应该把你的第二个例子重写成这样的东西才能让它发挥作用:

resultsBoard.findElements(By.css('mySelector')).then(function(elements) {
  for (var idx = 0; idx < elements.length; idx++) {
    elements[idx].getText().then(function(text) {
      printText(text);
    });
  }
});