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

Терміни, нюанси та джерела

Що змінилося після запису · 58:10

Поточний фактчек Playwright Test Agents

Поточна офіційна документація описує planner, generator і healer для Node.js Playwright Test у TypeScript-first workflow. Playwright Test також підтримує JavaScript, а Python docs мають окремий Node-based playwright-cli для coding agents; це не той самий planner/generator/healer workflow.

Зміну після запису не встановлено: Playwright Test Agents з’явилися у v1.56 до сесії 2026-01-07; current docs checked 2026-07-31.

Оцінка корисності у відео залишається авторською думкою, але твердження про можливості інструмента треба показувати поруч із актуальним official state.

Неймінг та структура automation-проєкту →

Python мануфактура · Програма курсу · 18:10–22:15

Chrome DevTools Recorder

Вбудований Chrome DevTools Recorder записує дії в уже відкритій браузерній сесії. Сценарій можна повторно програти з нормальною або зміненою швидкістю, що корисно і для ручного тестування, і для швидкого заповнення форм. Recorder експортує сценарій переважно в JavaScript-орієнтовані формати. У демонстрації немає прямого Python-експорту, тому отриманий JSON або JavaScript доведеться конвертувати й обов’язково перевіряти. Перевага інструмента — replay у поточній сесії; недолік — це не готовий Python/pytest-тест.

4. Playwright плагіни та codegen →

Python мануфактура · Програма курсу · 28:00–32:00

Вартість polling і `StaleElementReferenceException`

WebDriver перевіряє стани елементів через браузер і JavaScript. Надто частий polling може впливати на сторінку, яку тест вимірює, особливо якщо UI одночасно виконує важку клієнтську логіку. Тому частоту й timeout варто тримати розумними, а кількість UI-тестів — достатньою для критичних journeys, не максимальною. Іноді короткий `sleep` може бути прагматичним, якщо саме polling блокує потрібний browser work, але це виняток із виміряною причиною. За замовчуванням очікується конкретний спостережуваний стан через explicit wait. `StaleElementReferenceException` виникає, коли WebDriver зберіг internal ID елемента, а компонент перерендерився й старий DOM-вузол зник. Повторний виклик дії на старому `WebElement` уже не може спрацювати; потрібен повторний пошук за locator.

2. Selenium організація PageObject's та Очікувань →

Python мануфактура · Сесії: AMA та PMP · 0:00–2:00

Домовленість із командою замість маскування бота

Cloudflare, gateway або load balancer можуть блокувати automation за browser signals, JavaScript execution і частотою запитів. Надійний шлях — узгодити з developers та DevOps контрольований header, cookie, test account або environment flag, який переводить конкретний тестовий traffic у спеціальний режим. Редакційне security-застереження: це має бути вузький контракт із секретом, allowlist, аудитом і мінімальними правами, а не загальний спосіб вимкнути захист.

Антибот-захист у контрольованих автотестах →

Python мануфактура · Програма курсу · 20:05–25:55

`page.pause()` і Playwright Inspector

`page.pause()` зупиняє тест і відкриває Playwright Inspector. Це дає змогу подивитися поточний DOM, перевірити locator та виконувати кроки по одному, не покладаючись лише на звичайний debugger IDE. Для короткоживучого статусу на кшталт `Saving`/`Saved` треба поставити паузу одразу після дії, яка його породжує. Якщо елемент зникає надто швидко, DevTools Sources може призупинити JavaScript через `F8`.

2. Storage state, cookie manipulation, дебаг зникаючих елементів →

Python мануфактура · Сесії: AMA та PMP · 23:01–25:36

Access modifiers і зближення мов

Java і C# формально перевіряють `public`, `private` та `protected`, тоді як Python використовує переважно conventions. Водночас суворіші мови скорочують boilerplate, а Python і JavaScript додають type hints та інструменти статичного аналізу. Python annotations допомагають IDE й type checker, але самі по собі не перетворюють Python на статично типізовану мову та не гарантують runtime-перевірку. Їхня користь — ранній зворотний зв’язок і краща навігація по API.

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