Из списка элементов исключить другой список элементов Selenide

Есть один список(String) и другой список(String).
Как с помощью Selenide исключить из одного списка другой список?
Исключение 1-го текста - понятно:

$$(“td:nth-child(3)”).excludeWith(Condition.text(“text”)).shouldHave(CollectionCondition.size(0));


Можно сделать и так, но это не то:
$$(“td:nth-child(3)”).excludeWith(Condition.text(“text1”))
.excludeWith(Condition.text(“text2”))
.shouldHave(CollectionCondition.size(0));

Кто уже делал такое помогите пожалуйста. Желательно как-то оптимально 1-2 строкой, если это можно.

P.S.: просьба не флудить, а по теме.
Заранее, спасибо.

Надо то, это не то… Вы уж определитесь…
Подробнее опишите саму задачу. Вы же не с улицы пришли, вы же всё-таки тестер в первую очередь.

И правда непонятно.
Вы уж покажите, что это за списки, как вы их получаете.

1 лайк

Вход: есть .csv file с одной колонкой(страны).
Есть список на странице. С помощью Селениде вот локатор, который находит нужную на странице информацию - $$(“td:nth-child(3)”).
Нужно проверить, чтобы список на странице содержал только те страны, которые есть в файле и в то же время не содержал других стран.

[asolntsev] сможете помочь теперь?

спасибо! Так работает, да.
Я хотела узнать, возможно средствами Selenide можно сделать тоже самое.

Показанный выше вариант со стримами вполне ок. Каких-то отдельных средств в селениде для именно этой задачи нет. Незачем.

Единственный недостаток варианта со стримами в том, что большом количестве элементов он может быть медленным. Если это проблема, можно использовать JavaScript:

List<String> страныИзЭксельки = ...;
List<String> страныСоСтраницы = Selenide.executeJavascript("return Array.from(document.querySelectorAll('td:nth-child(3)')).map(x => x.textContent)";

и дальше уже сравнивать между собой страныИзЭксельки и страныСоСтраницы.

1 лайк