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

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

Приклад коду · 12:20

CSS attribute matching

Порівнює id shorthand, substring match і комбінування tag, classes та attribute.

Кожен selector знаходить лише intended element у відповідному DOM fixture.

3. Селектори та пошук елементів →

Java: архівні доповнення · 4:45–7:55

Classes і комбінування ознак

Елемент за class шукається через `.class-name` або attribute selector на кшталт `[class*='class-name']`. Два classes одного елемента записуються без пробілу: `.first.second`. Tag та `id` або attribute також можна комбінувати, наприклад `turbo-frame#global_search_results`. Якщо attribute value містить пробіл або спеціальні символи, його треба брати в лапки. У Java-рядку single quotes всередині CSS зменшують кількість escaping.

CSS і XPath: пошук елементів →

Python мануфактура · Програма курсу · 1:02–2:03

`try` та конкретний `except`

У `try` розміщують лише операцію, яка очікувано може впасти, а `except ValueError` обробляє конкретний failure type. Широке `except Exception: pass` стирає сигнал і ускладнює debugging. Selenium, filesystem, network і parsing мають різні exception classes, які слід розрізняти.

8 ексепшени →

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

Accessibility tree, локалізація і стабільність атрибутів

Chrome DevTools дозволяє подивитися accessibility tree й accessible name, навіть якщо значення неочевидне з HTML. Текстові locators зручні, доки labels, placeholders і переклади стабільні. Для багатомовного продукту або content, який окремо змінює контент-команда, стабільний `data-testid` часто кращий. Атрибути можуть рендеритися по-різному залежно від frontend framework, а generated classes та IDs змінюватися між builds, тому вибір залежить від реального контракту команди.

Пріоритети селекторів та їхня надійність →

Python мануфактура · Програма курсу · 6:31–7:59

Composition замість глибокого inheritance

Наслідування корисне для невеликої справді спільної поведінки, наприклад `open()` або `is_loaded()` у base page. Для сторінки, що складається з кількох незалежних components, composition простіша: page тримає потрібні objects і делегує їм роботу. Це уникає multiple inheritance та великих base classes, зміна яких ламає багато несуміжних сторінок.

10 ооп →

Python мануфактура · Сесії: AMA та PMP · 42:15–45:38

План перед змінами та практичний старт

[Дивитися з 42:15](https://www.youtube.com/watch?v=crzGm6nzfbU&t=2535s). Без чіткого плану той самий prompt може щоразу змінювати різні files, selectors, components або classes, особливо у великій codebase. Тому спочатку фіксують місце й межі зміни, а реалізацію запускають у новому контексті вже за погодженим планом. Для професійного розвитку корисні не декларації про AI, а власні case studies: як було поставлено задачу, які gates захистили якість, що перевірено й які обмеження лишилися. Найпростіший спосіб отримати такий досвід — зробити невеликий власний інструмент, який розв'язує реальну особисту проблему.

Як налаштувати мультиагентне середовище →
Запитати в чаті про «classes» →