Транспортир - сбой: ссылка на устаревший элемент: элемент не прикреплен к документу страницы
У меня есть функция в объекте страницы моего вектора 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();
};
});
};
Ответы
Ответ 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();
};