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

Java · Сесії: AMA та PMP · 6:00–9:30

OOP, патерни й ізоляція browser state

На базовому рівні потрібно розуміти primitives/value types, reference/object types, класи, об'єкти та принципи OOP. Із прикладних патернів найчастіше зустрічається Page Object; корисно впізнавати Singleton, Builder, Facade та інші рішення, але не впроваджувати їх без проблеми, яку вони реально спрощують. Page Factory виник навколо старих Selenium-підходів із lazy initialization елементів. Для сучасного Selenium або Playwright його не варто застосовувати за інерцією. У багатопоточному WebDriver framework кожен тест/worker повинен мати власний browser context або driver; спільний mutable driver спричиняє взаємний вплив тестів.

Що має вміти та знати мідл автоматизатор →

Java · Основний курс · 15:33–24:00

Інстанси, `static` і назви сторінок

Для Page Object обирається об'єктноорієнтований підхід без `static`: метод викликається через створений інстанс класу. Сторінку перейменовують із `LoginPage` на `SignInPage`, оскільки назву `sign in` уже використовує сам продукт. У Java назва public-класу має збігатися з назвою файлу, тому для перейменування застосовується рефакторинг IntelliJ IDEA, а не ручна заміна тексту. Метод у `SignInPage` називається просто `open`, без дублювання назви класу у `openSignInPage`. Базовий домен задається один раз через `Configuration.baseUrl`, після чого Selenide `open` може приймати лише шлях сторінки. Це прибирає повторення домену з Page Object-методів.

Page Objects: рефакторинг тестів →

Java · Сесії: AMA та PMP · 19:35–23:01

Інкапсуляція відкриває безпечний інтерфейс

Інкапсуляція поєднує стан і поведінку та визначає дозволений спосіб взаємодії з об’єктом. Практичний акцент — не «сховати все», а відкрити невеликий зрозумілий інтерфейс, який не змушує зовнішній код знати внутрішню послідовність дій. Користувач класу працює за правилами його публічних методів. Це знижує coupling: внутрішню реалізацію можна змінити, поки зовнішній контракт залишається стабільним.

__init__, self, page та принципи ООП →
Запитати в чаті про «oop» →