【发布时间】:2020-08-26 17:12:51
【问题描述】:
我有一个包含一些行的航班信息网格,其中包含航班号等属性。现在,我想根据目标航班号flightno 过滤该行。这里flightno的值为15984234,代码如下
let trTarget = element.all(by.css('[kendogridlogicalrow]')).filter(tr => {
return tr.all(by.css("[data-kendo-grid-column-index='1']")).getText().then(cellstxt => {
console.log(cellstxt + '++++')
console.log('1')
if (cellstxt.includes(FlightNo)) {
console.log(cellstxt + '----')
console.log('2')
return true;
} else {
return false;
}
});
}).first()
trTarget.getText().then(cellstxt => {
console.log(cellstxt + '&&&&')
console.log('3')
})
这些代码被包装成一个函数locateTrWithId,它返回trTarget。
在调用函数的地方,代码如下所示
let trTarget = this.locateTrWithId(flightno);
var ele = trTarget.all(by.tagName('a')).first()
browser.wait(EC.elementToBeClickable(ele), 10000)
ele.getText().then(txt => {
console.log(txt + '*****')
console.log('4')
})
ele.close()
函数locateTrWithId正常工作,但是当我尝试打印一些细节时,我发现了一些有趣的东西,查看console.log结果
15983767++++
1
15984065++++
1
15984234++++
1
15984234----
2
p&&&&
3
15983767++++
1
15984065++++
1
15984234++++
1
15984234----
2
15983767++++
1
15984065++++
1
15984234++++
1
15984234----
2
15983767++++
1
15984065++++
1
15984234++++
1
15984234----
2
15983767++++
1
15984065++++
1
15984234++++
1
15984234----
2
15984234*****
4
15983767++++
1
15984065++++
1
15984234++++
1
15984234----
2
如截图所示,filter部分被调用了5次,其中1次与从过滤后的trTarget(print 3)中get text部分一起执行,其他部分独立执行
另外一件事是调用并执行函数locateTrWithId后,得到返回trTarget的文本(打印4),过滤器再次执行!
以下是部分相应的 HTML 代码
<tr kendogridlogicalrow="" data-kendo-grid-item-index="0" role="row" class="ng-star-inserted">...</tr>
<tr kendogridlogicalrow="" data-kendo-grid-item-index="1" role="row" class="ng-star-inserted">...</tr>
<tr kendogridlogicalrow="" data-kendo-grid-item-index="2" role="row" class="ng-star-inserted">
<td kendogridcell="" kendogridlogicalcell="" role="gridcell" aria-selected="false" data-kendo-grid-column-index="0" colspan="1" aria-colindex="1" class="ng-star-inserted">...</td>
<td kendogridcell="" kendogridlogicalcell="" role="gridcell" aria-selected="false" data-kendo-grid-column-index="1" colspan="1" aria-colindex="2" class="ng-star-inserted"><a href="#/admin/manifest-detail/30707" class="ng-star-inserted"> 15984234</a>
</td>
</tr>
请解释一下。非常感谢!
【问题讨论】:
-
我实际上已经问过一个非常相似的问题here,但从未真正得到回答。我想知道为什么它也会多次遍历每个元素。我怀疑我们永远不会确定,除非我们自己深入研究代码并弄清楚。
标签: typescript filter protractor autotest