Подтвердить что ты не робот

Транспортир - сбой: ссылка на устаревший элемент: элемент не прикреплен к документу страницы

У меня есть функция в объекте страницы моего вектора protractor e2e, которая отменяет несколько параметров из выпадающего меню. Ранее он работал нормально, но теперь я получаю следующую ошибку:

Сбой: ссылка на устаревший элемент: элемент не прикреплен к документу страницы

Я попытался извлечь элементы на каждой итерации цикла for, но цикл for выполняется до того, как обещание будет разрешено в первый раз, что означает, что значение "limit" для 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();
        };
    });
};
4b9b3361

Ответ 1

Как насчет использования 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();
};