3 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
漢克在回答這個(gè)問(wèn)題上做得很好。
我還要注意另一種快速而骯臟的方法來(lái)處理這個(gè)問(wèn)題。只需將promise內(nèi)容移動(dòng)到某個(gè)外部函數(shù)并將其傳遞給索引。
例如,如果要在頁(yè)面上以各自的索引(從ElementArrayFinder)記錄所有列表項(xiàng),您可以執(zhí)行以下操作:
var log_at_index = function (matcher, index) { return $$(matcher).get(index).getText().then(function (item_txt) { return console.log('item[' + index + '] = ' + item_txt); }); }; var css_match = 'li'; it('should log all items found with their index and displayed text', function () { $$(css_match).count().then(function (total) { for(var i = 0; i < total; i++) log_at_index(css_match, i); // move promises to external function }); });
當(dāng)您需要進(jìn)行快速調(diào)試并輕松調(diào)整以供自己使用時(shí),這會(huì)派上用場(chǎng)。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
我不是在討論上面討論的學(xué)識(shí)淵博的人的邏輯或智慧。我寫道指出,在一個(gè)聲明為異步的函數(shù)中的當(dāng)前版本的Protractor中,如下所示的for循環(huán)(我在typeScript中編寫,合并來(lái)自@ hetznercloud / protractor-test-helper的flowLog,雖然我相信控制臺(tái)。日志也可以在這里工作)行為就像人們可能天真地期待的那樣。
let inputFields = await element.all(by.tagName('input'));
let i: number;
flowLog('count = '+ inputFields.length);
for (i=0; i < inputFields.length; i++){
flowLog(i+' '+await inputFields[i].getAttribute('id')+' '+await inputFields[i].getAttribute('value'));
}
產(chǎn)生的輸出就像
count = 44
0 7f7ac149-749f-47fd-a871-e989a5bd378e 1
1 7f7ac149-749f-47fd-a871-e989a5bd3781 2
2 7f7ac149-749f-47fd-a871-e989a5bd3782 3
3 7f7ac149-749f-47fd-a871-e989a5bd3783 4
4 7f7ac149-749f-47fd-a871-e989a5bd3784 5
5 7f7ac149-749f-47fd-a871-e989a5bd3785 6
...
42 7f7ac149-749f-47fd-a871-e989a5bd376a 1
43 7f7ac149-749f-47fd-a871-e989a5bd376b 2
據(jù)我所知,這await是關(guān)鍵,強(qiáng)制數(shù)組在前面被解析(因此計(jì)數(shù)是正確的)并且await循環(huán)中的s導(dǎo)致每個(gè)promise在被允許遞增之前被解析。
我的目的是為讀者提供選擇,而不是對(duì)上述內(nèi)容提出質(zhì)疑。
- 3 回答
- 0 關(guān)注
- 524 瀏覽
添加回答
舉報(bào)