Находят контейнер списка, затем дочерние элементы фильтруют по тексту/атрибуту в коде, либо используют XPath с предикатом по тексту, а не li[3].
Разбор
findElements + stream/filter по getText.
- data-id строки из бэкенда — лучший якорь.
- Позиционные индексы ломаются при сортировке.
- Relative locators иногда помогают, но текст/id надёжнее.
Итог
Списки адресуют по смыслу строки, не по порядковому номеру в разметке.