Как создать коллекцию (String или SelenideElement) из имеющейся ElementsCollection в Selenide

Всем привет! Данным постом хотел бы сразу закрыть несколько интересующих меня вопросов касаемо ElementsCollection. А именно создание новой ElementsCollection children из дочерних элементов уже существующей ElementsCollection parents.

Конкретно в моем случае ситуация такая.
У меня есть таблица, ряды которой сохранены в ElementsCollection (tableLines). В ней необходимо отфильтровать все строки, которые в определенной ячейке имеют текст, содержащий несколько словосочетаний (substrings, т.е. совпадение должно быть не по целому тексту, а по части)

Соответственно, у меня получилось следующее:

tableLines.filter(and("Filter by genre", text("industrial"), text("power"));

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

Код :

List<String> singers = tableLines.filter(and("Filter by genre", text("industrial"), text("power")))
                .shouldHave(sizeGreaterThan(0))
                .asFixedIterable().forEach(s -> s.$("td:nth-child(1)").getText());

Тут я попробовал сохранить в List, но также интересует вариант с сохранением в новую ElementsCollection, например:

ElementsCollection singers = tableLines.filter(and("Filter by genre", text("industrial"), text("power")))
                .shouldHave(sizeGreaterThan(0))
                .asFixedIterable().forEach(s -> s.$("td:nth-child(1)"));

Если бы элементы изначально были сохранены в List, то получилось бы что-то типа:

List<SelenideElement> singers = tableLines.stream().filter(s -> s.getText().contains("industrinal")).map(s -> s.$("td:nth-child(1)")).collect(toList());
//или

List<String> singers = tableLines.stream().filter(s -> s.getText().contains("industrinal")).map(s -> s.$("td:nth-child(1)").getText()).collect(toList());

Решать данную задачу при помощи создания дополнительных классов не хотелось бы.
Спасибо!

Привет!

  1. Почему вы боитесь создавать дополнительные классы?
    Попробуйте, это не страшно. :slight_smile:
  2. Зачем вам собирать все эти тексты в список? Что будете дальше делать с этим List<String> singers?
1 лайк