如何处理findElements结果
How to handle findElements result?
代码1
resultsBoard.findElements(By.css(mySelector)).then(function(elements) {
elements.forEach(function(val, idx) {
elements[idx].getText().then(function(text) {
console.log(text);
});
});
});
代码2
resultsBoard.findElements(By.css('mySelector')).then(function(elements) {
for (var idx = 0; idx < elements.length; idx++) {
elements[idx].getText().then(printText(text));
}
});
代码1运行良好,检索与我的选择器匹配的所有元素的文本。代码2给我一个
ReferenceError:文本未定义
有什么区别?为什么会发生这种情况?
第二个代码段添加了调用括号,该括号会立即调用函数(printText
),期望text
已经定义。第一个代码段中没有这些括号。
elements[idx].getText().then(printText(text));
// is equivalent to...
var _result = printText(text);
elements[idx].getText().then(_result);
要提供一个命名函数作为参数,您只需要将其名称用作变量:
elements[idx].getText().then(printText);
在第一个示例中:
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);
});
}
});
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- jQuery使用api获取typeform结果
- 根据条件检查数据库结果
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- Angular,表达式{{}}的结果没有插入到ng-click中
- 如何处理findElements结果