Python мануфактураJavaDesign Patterns для автоматизаторів

Java · Основний курс · 5:30–11:18

`ElementsCollection`, масиви та Java Collections Framework

Знайдені плитки проєктів зберігаються у змінній типу `ElementsCollection` — власному типі Selenide, пристосованому до роботи з набором UI-елементів. Поруч автор порівнює масиви з `List` і `Set`: колекції мають готові операції для обходу, фільтрації, пошуку, сортування, додавання та очищення. Масив може бути трохи компактнішим або швидшим, але для UI-автотесту ця різниця зазвичай губиться на тлі звернень до браузера. Читання значення з пам’яті триває незрівнянно менше, ніж отримання тексту зі сторінки локально, у Jenkins або через BrowserStack. Тому для звичайних тестів важливіші зручність і читабельність; мікрооптимізації мають сенс лише після вимірювання реальної проблеми, наприклад коли підготовчі дії спотворюють performance test. Для розміру масиву використовується `length`, а для колекції — метод `size()`. IDE підказує доступні операції та може запропонувати stream, але на цьому етапі урок радить залишатися з простішими колекційними API.

Selenide: колекції елементів і стан браузера →

Java · Основний курс · 0:00–5:30

Навіщо потрібні колекції елементів

Колекція потрібна, коли один конкретний елемент складно знайти напряму або коли однакову перевірку треба виконати для групи елементів. Практичний підхід — знайти всі відповідні елементи, відфільтрувати їх за критерієм і далі працювати з результатом. Selenide за замовчуванням працює з колекцією динамічно: під час наступної перевірки він може знову виконати пошук за селектором, а не покладатися на раз назавжди зафіксований список DOM-вузлів. У демонстрації розглядаються варіанти пошуку всіх елементів, зокрема `$$` і `$$x`; для XPath є окремий короткий запис. Пошук колекції варто починати зі структури HTML: визначити контейнер і повторювані елементи на кшталт `ul` та `li`. Семантичні теги полегшують читання сторінки не лише тесту, а й accessibility-інструментам; якщо селектор неминуче неочевидний, йому дають предметну назву.

Selenide: колекції елементів і стан браузера →

Java · Основний курс · 21:19–25:07

`filter`, `find` і перенесення даних із UI в Java

`filter` залишає в результаті всі елементи, які відповідають `Condition`, і повертає нову `ElementsCollection`. `find` шукає перший відповідний елемент та повертає `SelenideElement`; в API також показані парні варіанти `filterBy` і `findBy`. Якщо на сторінці треба перевірити десятки або сотні значень, багато окремих браузерних звернень можуть стати найдорожчою частиною тесту. У такому випадку доцільно один раз отримати потрібні тексти зі сторінки в Java collection і виконати решту перевірок у Java. Для одного елемента така оптимізація майже не дає користі й лише ускладнює тест.

Selenide: колекції елементів і стан браузера →
Запитати в чаті про «ElementsCollection» →