web-dev-qa-db-ja.com

分度器-失敗:古い要素参照:要素がページドキュメントに添付されていません

分度器の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();
        };
    });
};
12
Daniel Bogart

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();
};
_
12
alecxe