【发布时间】:2015-11-23 04:57:38
【问题描述】:
为了简单起见,假设我有以下 DOM 结构:
<div class='myparent'>
<div class='child'>
<div class="label">A</div>
<div class="ico"/>
</div>
<div class='child'>
<div class="label">B</div>
<div class="ico"/>
</div>
<div class='child'>
<div class="label">C</div>
<div class="ico"/>
</div>
</div>
我想在函数 findAllByCssSelector('.child') 返回的所有 child 元素中循环。特别是,只有当 div 的 label 是 B 时,我才会点击 ico div 子元素。
我记得,findAllByCssSelector() 返回Promise.<Array.<leadfoot/Element>>。
通常我应该这样做:
var my_label = null;
this.remote
.findAllByCssSelector('.my-selector').then(function (elementArray) {
for(.....) {
elementArray[i]
.getVisibileText()
.then(function (text) {
if(text == my_label)
elementArray[i].findByCssSelector('.ico').click().end()
}
}
})
我尝试了这段代码但没有成功,因为getVisibleText().then() 函数中的elementArray[i] 不存在 - 就像我失去了它的引用一样。此外,我还需要如果在循环结束时没有找到标签,则应该抛出异常。
我怎样才能做到这一点?有人可以帮忙吗?
【问题讨论】:
-
所以?只需将循环放在 Promise 回调中。你知道如何访问数组吗?请发布您当前的代码尝试(即使不工作)
标签: javascript promise this intern leadfoot