分度器のe2eページオブジェクトに、ドロップダウンメニューからいくつかのオプションをオフにする機能があります。以前は問題なく動作していましたが、次のエラーが発生しています。
失敗:古い要素参照:要素がページドキュメントに添付されていません
Forループの各反復で要素をフェッチしようとしましたが、forループは、promiseが最初に解決される前に実行されます。つまり、xの「制限」値が繰り返し渡され、テストは同じドロップダウンをクリックするだけです。オプションを数回。
this.uncheckColumns = function(limit) {
element(by.className('fa-cog')).click();
element.all(by.className('multiSelectLi')).then(function(options) {
for (x = 1; x < limit; x++) {
options[x].click();
};
});
};
each(element, index)
を使用する方法は?
_element.all(by.className('multiSelectLi')).each(function(option, index) {
if (index < limit) {
option.click();
}
});
_
または、 filter(element, index)
と組み合わせて:
_element.all(by.className('multiSelectLi')).filter(function(option, index) {
return index < limit;
}).each(function(option) {
option.click();
});
_
また、問題を解決する素朴なアプローチ(ループでelement.all()
を継続的に呼び出す):
_for (var index = 0; index < limit; index++) {
var option = element.all(by.className('multiSelectLi')).get(index);
option.click();
};
_