element.all().each()
выполнить итерацию для каждого элемента, даже если вы добавите условие if
, чтобы щелкнуть только по одному элементу из всех, но getText()
в каждой итерации будет выполняться.
После нажатия на кнопкусопоставленный элемент, страница перенаправлена или обновлена.Затем вызовите getText()
для следующего элемента на «новой» странице, поэтому отчет stale reference exception
Вам необходимо отфильтровать соответствующий элемент, а затем щелкнуть по нему.
// approach 1
element
.all(by.css('ul[class='ui-dropdown-items ui']>li'))
.filter(function(ele) {
return ele.getText().then(function (text) {
return text.includes("Bag");
});
})
.then(function(eles){
if (eles && eles.length > 0) {
eles[0].click()
}
})
// approach 2
let options = element.all(by.css('ul[class='ui-dropdown-items ui']>li'))
options.getText(function(txts) {
return txts.findIndex(function(txt){
return txt.includes('Bag');
})
})
.then(function(index){
return index !== -1 && options.get(index).click();
})