Проблемы с получением данных из List<SelenideElement>

Добрый вечер! Сегодня получил такую ситуацию:
В строке 58 сохраняю список вебэлементов (List), далее мне нужно вытащить текст из каждого элемента по пути и сравнить его (строка 63), проблема:

  1. В дебаге видно, что в элементе из списка содержится текст:
  2. Но когда доходит до строки 63, селенид почему то уже не может найти текст по тому же пути:


    Почему так происходит? В строку 63 приходит лист из строки 58
    Пробовал разными способами получать текст, ни один не сработал (некоторые названия атрибутов изменены для скрина, на это смотреть не нужно):

Не совсем понял суть проблемы.
Почему бы в 58-й строчке не вернуть сразу необходимый текст вместо того, чтобы его находить в другом месте? Где гарантия, что данные селекторы ещё актуальны на момент 63-й строчки? За это время могло произойти что угодно: страница могла обновиться (там явно совершаются какие-то клики), может Вы вообще уже на другой странице / iframe находитесь?
Поставьте бряк на 63-й строчке, перед входом в проверку и проверьте валидность селекторов на этом этапе, а не за километр до него.

Вы не поняли того, что я хочу сделать)
Смысл в том, чтобы сохранить элементы в список на первой странице, далее перейти на вторую страницу, получить из нее список элементов, и после вычленить текст из обоих списков и сравнить их.
Да, на строке 63 автотест находится на другой странице, я ожидал что список будет хранить в себе все инфу, и я смогу получить оттуда данные вне зависимости от того, нахожусь ли я сейчас на странице или нет

Так ещё раз: зачем нужно хранить список элементов?
Вы сравниваете текст - храните текст для сравнения.

1 лайк

Каждый элемент содержит много полей с текстом, и на строке 63 я ищу тот, который мне нужен. В будущем может быть ситуация, когда мне понадобится другой текст, соотв. я закладывал возможность поиска нужного мне поля и получение текста из него. Вариант сложить весь текст мне не подходит, т.к я не смогу определить, из какого именно поля он был получен

Из того, что я вижу на скринах - у вас есть table. Я прав?
Если да - сохраните её значения в hashMap of hashMaps, если Вам критичны именно названия колонок (ИМХО смысла не имеет, поскольку вряд ли они будут меняться слишком часто, т.е., можно юзать обычный 2-мерный ArrayList и использовать вместо названия колонок индекс, этого более, чем достаточно).

это так не работает, селениум не хранит элементы целиком

вы когда сделали поиск элемента или коллекции элементов просто получили текущий айди какого-то элемента в дереве элементов или коллекцию, и можете в текущий момент получить какую-то информацию по этим айди (в дебаге посмотрите, у каждого элемента гуид зашит)

и как только что-то на странице произошло - все эти айдишники протухают

то есть вы нашли таблицу, из неё инфу вытаскиваете, потом уже где-то кликаете и заново ищете таблицу

по другому это не работает

1 лайк