代码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:未定义文本
有什么区别?为什么会这样?
答案 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);
});
}
});