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

Python мануфактура · Програма курсу · 7:07–13:05

Власні postfix templates для Playwright

`Postfix Completion` налаштовується через Settings (`⌘,` на macOS). Postfix template застосовується до виразу ліворуч від крапки. Спеціальна змінна `$EXPR$` означає цей вираз, а `$END$` визначає, де залишиться курсор після розгортання. Створено кілька Python-шаблонів: - `"selector".locator` перетворює селектор на `page.locator("selector")`; - вираз із postfix `expect` обгортається в `expect(...)`; - скорочений варіант на кшталт `expvis` одразу створює `expect(...).to_be_visible()`. Під час першого налаштування `locator` вираз помилково був додатково взятий у лапки, через що PyCharm формував неправильний код. Після виправлення `$EXPR$` підставляється як готовий вираз. Це важливе правило: шаблон має додавати лише відсутню структуру, а не повторно форматувати вже валідний фрагмент. Такий ланцюжок скорочує типовий шлях до перевірки: знайти селектор, вставити його як рядок, застосувати `.locator`, а потім `.expvis`. Результат детермінований і не потребує повторної перевірки припущень генеративної моделі.

Майструємо IDE під себе →

Python мануфактура · Програма курсу · 13:05–18:14

Змінні, intention actions і Extract Method

Окремий postfix template експериментально перетворює вираз на присвоєння змінній. Він корисний лише тоді, коли справді економить дії; якщо шаблон незручно визначає позицію курсора або працює не для всіх виразів, його краще спростити чи не використовувати. `⌥Enter` відкриває intention actions для поточного контексту. У меню можна рухатися клавішами й вибирати, наприклад, перейменування елемента. Перейменування через IDE змінює всі пов’язані входження, тому безпечніше за ручний пошук і заміну. `Refactor → Extract Method` (`⌘⌥M` у показаному keymap) переносить виділений фрагмент у новий метод. PyCharm визначає потрібні аргументи й можливі значення, що повертаються. У прикладі перевірки кнопки винесено в `check_manage_button`, після чого до викликів усередині методу додано `self`. Це спосіб прибрати дублювання на рівні поведінки, не переписуючи код вручну. Практичне зауваження з демонстрації: `to_have_text()` не варто вважати повною заміною перевірки видимості. Якщо видимість є окремою вимогою сценарію, її треба перевіряти явно.

Майструємо IDE під себе →

Python мануфактура · Програма курсу · 54:13–58:29

Завершення тесту й різниця між шаблонами

Після успішного запуску тест перейменовується відповідно до перевірюваної поведінки. Для ще одного повторюваного фрагмента створюється простий live template, який розгортається в `return self`. Це підтримує ланцюжкові виклики Page Object без повторного ручного набору. Плагіни не є основою цього процесу. У викладача встановлений Junie, але частіше для окремих задач використовується Claude Code. Головний приріст швидкості в уроці дають штатні засоби PyCharm: пошук у Settings, keymap, рефакторинги та шаблони. Параметри сторонніх плагінів варто змінювати лише під реальну потребу. Підсумкова модель трьох механізмів: - **postfix template** застосовується після виразу через крапку та обгортає або перетворює цей вираз; - **live template** розгортає за абревіатурою блок коду в позиції курсора; - **file template** створює новий файл із готовою структурою. На практиці postfix зручний для `locator` або `expect`, live template — для `page.pause()`, `get_by_role()` і повторюваних методів, а file template — для Page Object. Ці механізми доповнюють один одного й не потребують зовнішнього генератора.

Майструємо IDE під себе →
Запитати в чаті про «postfix-template» →