为简单起见,假设我有以下 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>
我想child
在函数 findAllByCssSelector('.child') 返回的所有元素中循环。ico
特别是,只有当label
div 是 B 时,我才会单击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()
}
}
})
我尝试了这段代码但没有用,因为函数elementArray[i]
内部getVisibleText().then()
不存在 - 就像我失去了它的引用一样。此外,我还需要如果在循环结束时未找到标签,则应抛出异常。
我怎样才能做到这一点?有人可以帮忙吗?