com.codeborne.selenide.ElementsCollection [src]
Объект этого класса также является прокси точно также как SelenideElement. Его можно получить с помощью вызова метода $$, и он представляет список веб-элементов на странице.
Для ElementsCollection определенны методы следующего типа:
методы выборки внутренних элементов
а точнее методы создания прокси-элементов представляющих выбранные элементы из данной коллекции
методы-проверки состояния коллекции элементов - assertions
методы получения статусов и значений коллекции элементов
Assertions
инициируют для прокси-коллекции поиск актуальных версий элементов коллекции на странице, совершают проверку по предикату ("условию" - объекту-кондишену класса CollectionCondition), и возвращают объекты ElementsCollection, позволяя использовать цепочки вызовов.
shouldBe- e.g.$$(".errors").shouldBe(empty)shouldHave- e.g.$$("#mytable tbody tr").shouldHave(size(2))
Также играют роль явных ожиданий (explicit waits). Они ждут до удовлетворения условия (size, empty) пока не истечет таймаут (значение Configuration.collectionsTimeout, которое установлено по умолчанию в 6000 миллисекунд).
Методы получения статусов и значений коллекции элементов
Инициируют для прокси-коллекции поиск актуальных версий элементов коллекции на странице, и возращают соответствуюе значение:
size()
isEmpty()
getTexts() // возвращает массив видимых текстов, e.g. для элементов
<li>a</li><li hidden>b</li><li>c</li>вернет массив вида ["a", "", "c"]
Эти методы - не имеют встроенных неявных ожиданий.
Методы выборки внутренних элементов
Дополнительная фильтрация - возвращает обьект прокси-коллекции представляющий отфильтрованные элементы оригинальной коллекции на странице, не имеет встроенных ожиданий.
filterBy(Condition)возвращает коллекцию (как ElementsCollection) из только тех элементов оригинальной коллекции, которые удовлетворяют условию - e.g.$$("#multirowTable tr").filterBy(text("Norris"))excludeWith(Condition)- e.g.$$("#multirowTable tr").excludeWith(text("Chuck"))
Дополнительный поиск элементов - возвращает обьект прокси-элемента представляющий найденный элемент оригинальной коллекции на странице, не имеет встроенных ожиданий.
get(int) - возвращает n-ый элемент какSelenideElement`; при попытке действий над элементом сработает неявное ожидание до существования и видимости n-го элемента в оригинальной коллекцииfindBy(Condition)- возвращает элемент коллекции какSelenideElementкоторый удовлетворяет условию , при попытке действий над элементом сработает неявное ожидание до появления в оригинальной коллекции соответствующего элемента
Дополнительная фильтрация и поиск позволяют почти полностью отказаться от менее читабельных xpath локаторов:
$$("#list li").filterBy(cssClass("enabled")).findBy(exactText("foo")).find(".remove").click();
// вместо
$(By.xpath("//*[@id='list']//li[@class='enabled' and .//text()='foo']//*[@class='remove']")).click();Last updated
Was this helpful?