Всем привет! Данным постом хотел бы сразу закрыть несколько интересующих меня вопросов касаемо 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());
Решать данную задачу при помощи создания дополнительных классов не хотелось бы.
Спасибо!