Не удается получить текст из списка

0

Я пытаюсь getText, но навсегда причина, что он становится пустым. Текст - это поле только для чтения, называемое театром, а затем список из 28 номеров под ним. Я пробовал много разных способов получить текст, включая getAttribute, который возвращает null. У меня есть функция прокрутки вниз, которая прокручивает страницу вниз, поэтому я вижу, что она распознается селектором, поскольку она прокручивается и подсчитывается. Я действительно потерял это. У меня есть массив под названием bodyArray, который соответствует тексту строки за строкой, но не может этого сделать.

html выглядит так:

<td class="capacity" title="Theater" data-style="theater">
  <input class="readonly" type="text" data-bind="value: capacityObservables.theater, readonly: $root.editItem() !== $data || enhanced, valueUpdate: 'afterkeydown'" readonly="readonly">
</td>

что у меня для моего кода:

//I have tried using the data-bind but i get an invalid selector error

var theaterStyle = element.all(by.css('[data-style="theater"]'));

theaterStyle.count().then(function(count) {
  console.log(count);
  j = 0;
  for (var i = 0; i < count; i++) {
    //scrolls down the list element by element
    browser.executeScript("arguments[0].scrollIntoView();", theaterStyle.get(i).getWebElement());
    theaterStyle.get(i).getText().then(function(text) {
      console.log(text, theaterArray[j], j);
      expect(text).toEqual(theaterArray[j++]);
    });
  }
});
  • 0
    @type='text'])[22]finspin есть список номеров, которые можно увидеть на экране. Я только что понял, что текстовое значение хранится в массиве из 189 элементов и рассчитывается скорее, а не вверх и вниз. поэтому элементы, которые мне нужны, чтобы получить текст, встречаются каждые 7 элементов. xpath для первого текста, который я должен получить, выглядит следующим образом: xpath = (// input [@type='text'])[22] type = 'text']) [22] Я считаю, что мне нужно написать что-то, чтобы увеличить на 7, и это будет схватить
Теги:
protractor

1 ответ

1
Лучший ответ

Возможно, текст добавлен в атрибут value. Вы попробовали это,

element.all(by.css('td[title="Theater"]>input')).each(function(element, index) {
  element.getAttribute('value').then(function (text) {
    console.log(index, text);
    expect(theaterArray.includes(text)).toEqual(true);
  });
});
  • 0
    это сделал !! однако у меня есть массив с ожиданием, которое проверяет построчно значения. вставляя этот код в цикл for, вы заставляете все печатать, а затем весь список, а не один за другим.
  • 0
    У вас есть много вариантов для сравнения ожидаемого текста из массива с отдельным элементом текста. Один из способов - просто проверить, содержит ли массив текст или нет - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… Пожалуйста, проверьте мой обновленный ответ
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню