non-public API
Python convention: name з одним leading underscore вважається implementation detail. Подвійний leading underscore запускає name mangling для уникнення конфліктів, але не гарантує privacy.
__init__, self, page та принципи ООП →Відеобібліотека
Пошук у нотатках курсу Python мануфактура та спільних матеріалах з переходом на потрібну секунду.
Python convention: name з одним leading underscore вважається implementation detail. Подвійний leading underscore запускає name mangling для уникнення конфліктів, але не гарантує privacy.
__init__, self, page та принципи ООП →Python-модулі повинні мати короткі назви в нижньому регістрі; underscore доречний, якщо покращує читабельність.
1. Фіксаємо назви файлів, рефакторинг та оптимізація під Python, підключаємо Ruff та uv →Один underscore, наприклад `_locator`, — домовленість «внутрішня деталь, не використовуй без потреби». Інтерпретатор не забороняє доступ. Подвійний початковий underscore запускає name mangling, щоб зменшити випадкові конфлікти в нащадках, але теж не створює security boundary. На відміну від `private` або `protected` у статично типізованих мовах, Python більше покладається на дисципліну автора й користувача класу. IDE може попередити про звернення до non-public member, але виконання зазвичай можливе.
Перший запуск падає з `Unable to locate element`: у селекторі переплутано дефіс і underscore. Замість додавання паузи селектор звіряється з уже робочим Page Object, помилка виправляється, а тест повторно запускається в debug mode. На breakpoint можна виконувати код покроково через Step Over або продовжити Resume Program. Це дає змогу побачити, після якої саме браузерної команди змінився стан сторінки, і відокремити помилку локатора від помилки наступного кроку. Після входу додається перевірка success message через `is_displayed()`. Така перевірка корисна як перший експеримент, але ще не робить тест стійким: вона читає стан елемента один раз і не очікує його появи.