Транспортир: Ошибка: ссылка на устаревший элемент: элемент не прикреплен к документу страницы после щелчка () - PullRequest
0 голосов
/ 04 марта 2019

Я сталкиваюсь с вышеуказанной проблемой, когда пытаюсь нажать на выпадающий элемент, соответствующий данному тексту.Все параметры раскрывающегося списка такие же, как на изображении с текстом span.Я пробовал вещи, указанные в ссылке здесь, но безуспешно. Транспортир: Ошибка: ссылка на устаревший элемент: элемент не прикреплен к документу страницы .Ссылки на теги приведены ниже на этой картинке.image.">

Мой код выглядит примерно так

element.all(by.css('ul[class='ui-dropdown-items ui']>li')).each(function(element) {
  element.getText().then(function (text) {
     if (text.includes("Bag")){
       element.click();
     }
  });
});

Хотя действие click выполняется вышеупомянутым оператором, все равно выдается ошибка.Кроме того, когда я пытаюсь нажать на любой индекс, как жесткий код, он работает без ошибок.element.all (). get (4), где 4 - индекс элемента.Мое приложение написано на английском языке. Может кто-нибудь помочь мне в этом!Это блокирует мой проект.

1 Ответ

0 голосов
/ 05 марта 2019

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();
})
...