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();

results matching ""

    No results matching ""