Удаление не нужных элементов со страницы

Добрый день.
Проблема такова - столбцы со страницы сохраняются в ElementsCollection

Есть также список “columns”, в соответствии с которым необходимо удалить лишние элементы из ElementsCollection

Как можно удалить через цикл несколько не нужных элементов?

Код

            if (columns.stream().noneMatch(s -> s.matches(selenideElement.getText()))) {  // если в Списке нет элементов из Коллекции с таким же названием
                selenideElement.click();
                new CommonElement(page, "Кнопка Удалить поле", true, true).click();
                new CommonElement("Окно_Информация", "Кнопка Да", true, true).click();
                return collectionFromPage;
            }
        }

Данный цикл удаляет только один элемент

Данный цикл удаляет один элемент, потому что тут нет цикла, а только проверка, что столбики не содержат текст.

Вам нужно что то типа такого

myList
    .stream()
    .filter(s -> s.startsWith("c"))
    .forEach(//логика удаления);

Извиняюсь, указал не весь код

for (SelenideElement selenideElement : collectionFromPage) {
if (columns.stream().noneMatch(s -> s.matches(selenideElement.getText()))) { // если в Списке нет элементов из Коллекции с таким же названием
selenideElement.click();
new CommonElement(page, “Кнопка Удалить поле”, true, true).click();
new CommonElement(“Окно_Информация”, “Кнопка Да”, true, true).click();

        }
      return collectionFromPage;

}

columns - я так понимаю список строк

  1. collectionFromPage - посмотрите сколько тут элементов, может у вас неправильный локатор
  2. Убедитесь что в тексте элементов нет лишних пробелов, иначе их нужно удалять или использовать Contain

Было бы неплохо еще посмотреть на исходный код таблицы. Судя по скрину, я понял, что лишние данные - это заголовки столбцов.

Обычно у таблиц есть thead и tbody. (http://htmlbook.ru/html/thead).
И если наполнять ваш ElementsCollection сразу колонками из tbody, то проблемы вообще не будет.

1 лайк