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

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

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

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

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

Java · Основний курс · 1:02:20–1:09:00

Custom RestAssured log filter і розбіжності даних

Для сталого логування request і response додається custom filter, який реалізує RestAssured `OrderedFilter`. Він логує request до виклику і response після нього, а також не намагається виводити порожнє body. Filter передається в base API configuration, тому всі controllers мають однакову діагностику. Лог показує розбіжності між create і list responses: наприклад, labels в одному response мають інше значення, а description не повертається так, як очікувалося. Частина помилок належить не DTO, а неідеальному API contract.

API-автоматизація: MVC і Jackson →

Java · Основний курс · 37:44–42:59

Пошук за селектором або текстом і межі chaining

Одна стратегія спочатку знаходить елементи за структурним селектором, а потім перевіряє їхній текст. Інша одразу знаходить елементи за текстом і перевіряє розмір отриманої колекції. У виміряному прикладі прямий пошук за текстом із перевіркою розміру виявився швидшим за фільтрацію вже знайденої колекції, але автор радить вибирати підхід за конкретною сторінкою та власними вимірами. Після пошуку одного контейнера можна знайти всередині нього колекцію. Зворотний chaining — отримати колекцію через `$$`, а потім одразу застосувати пошук одного дочірнього елемента до всієї колекції — не працює як пошук у кожному елементі. Для цього треба пройти колекцію циклом і виконати дочірній пошук для кожного `SelenideElement`.

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