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

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

Приклад коду · 0:00

Мінімальний wait-aware BasePage

Page Objects передають locator tuple у BasePage, а кожна дія очікує власну перевірювану передумову.

click() працює лише з видимим і enabled елементом; type_text() — з видимим елементом.

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

Практика · 40:00

Стабілізувати Selenium-сценарій

Створіть pytest fixture з webdriver.Chrome() і гарантованим quit() після тесту.
Відтворіть вхід і пошук проєкту через By.CSS_SELECTOR.
Замініть перевірки після переходів на WebDriverWait з visibility_of_element_located.
Навмисно зламайте один locator і переконайтеся, що падіння вказує на очікувану умову.
Тест проходить без sleep і падає з діагностичним TimeoutException, якщо цільовий locator неправильний.

1. Selenium початок, основи, фікстури →

Приклад коду · 30:00

Явне очікування видимого елемента

Locator передається всередину expected condition, тому кожна спроба polling може повторно знайти актуальний DOM-вузол.

Повертається видимий WebElement або після 10 секунд виникає TimeoutException.

1. Selenium початок, основи, фікстури →

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

`WebDriverWait` та `expected_conditions`

Явне очікування створюється як `WebDriverWait(driver, timeout, poll_frequency=...)`. Timeout задає верхню межу, а `poll_frequency` — інтервал повторної перевірки. Значення треба підбирати без надмірного polling: частіші запити не лікують повільний продукт і можуть додати зайве навантаження браузеру. Метод `until()` приймає конкретну умову з `selenium.webdriver.support.expected_conditions`, яку часто імпортують як `EC`. Серед типових умов: `visibility_of_element_located`, `element_to_be_clickable`, presence, invisibility і selected state. До `WebDriverWait` можна передати ignored exceptions, наприклад `NoSuchElementException` або `StaleElementReferenceException`. Проте це працює лише тоді, коли пошук виконується всередині condition; якщо `find_element()` викликати раніше під час формування аргументу, exception виникне ще до старту polling.

1. Selenium початок, основи, фікстури →

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

Від сирого сценарію до Page Object

Стартовий тест напряму викликає `driver.find_element()`, `WebDriverWait(...).until(...)` і браузерні дії. Він придатний для перевірки ідеї, але змішує бізнес-сценарій із технікою Selenium, тому наступний крок — дати діям читабельні назви й рознести їх по Page Objects. Замість Playwright `Page` у конструктор Page Object передається Selenium WebDriver. Спільний `BasePage` зберігає driver і один раз ініціалізує стандартне очікування, щоб кожен клас сторінки не дублював timeout та polling configuration. Найпрактичніше представлення локатора — tuple на кшталт `(By.CSS_SELECTOR, "...")`. Воно зберігає і стратегію, і значення пошуку та напряму сумісне з locator-based expected conditions.

2. Selenium організація PageObject's та Очікувань →
Запитати в чаті про «WebDriverWait» →