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

Java · Основний курс · 2:40–6:30

Перенесення Selenide-тесту на чистий Selenium

Проєкт розділяється на окремі пакети для Selenide і Selenium, після чого той самий сценарій переписується через `driver.findElement(...)`, `By.cssSelector(...)`, `sendKeys(...)` і `click()`. Для текстового локатора, якому немає прямого аналога `By.text`, використовується XPath. Механічна заміна Selenide-викликів допомагає швидко отримати початковий варіант, але залишає багатослівний код і не додає очікувань. Тому наступний крок — явно визначити, коли елемент готовий до пошуку, перевірки або дії.

Selenium: очікування та мікрообгортки →

Java · Основний курс · 6:30–13:50

Чому implicit wait не підходить динамічним сторінкам

В уроці радять не змішувати implicit і explicit waits та для динамічних React/Angular-сторінок покладатися на explicit waits. Implicit wait очікує, доки елемент з'явиться в DOM під час `findElement`, але сама наявність вузла ще не означає, що він видимий, enabled або придатний до взаємодії. Після пошуку Selenium працює з ідентифікатором конкретного елемента. Якщо сторінка перерендерила вузол, старе посилання більше не відповідає поточному DOM і команда може завершитися `StaleElementReferenceException`. Explicit wait через `WebDriverWait.until(...)` і `ExpectedConditions` дозволяє чекати саме потрібного стану, наприклад видимості або очікуваного тексту.

Selenium: очікування та мікрообгортки →

Java · Основний курс · 13:50–17:00

`WebElement` проти `By` усередині очікування

Перший запуск падає з `NoSuchElementException`, хоча елемент згодом з'являється на сторінці. Причина — `findElement` виконується ще до входу в `wait.until(...)`: Selenium спочатку намагається передати готовий `WebElement`, і очікування не отримує можливості повторювати пошук. Коли в `ExpectedConditions` передається `By`, локатор залишається всередині циклу очікування. Тоді `WebDriverWait` протягом заданого timeout повторно перевіряє, чи знайдений елемент і чи містить він потрібний текст. Для динамічної сторінки варіанти на кшталт `visibilityOfElementLocated(By)` і `textToBePresentInElementLocated(By, text)` гнучкіші за умови, які приймають уже знайдений `WebElement`.

Selenium: очікування та мікрообгортки →

Java · Основний курс · 20:02–25:15

Перший тест і strict locator semantics

У перенесеному тесті навігація виконується через `page.navigate`, пошук — через `page.locator`, а перевірка — через Playwright assertions. Тест запускається у браузері й успішно проходить після коригування локатора. Playwright locator може описувати кілька DOM-вузлів, але операція, що очікує один елемент, завершується помилкою strict mode. На відміну від Selenium `findElement`, який із множини повертає перший збіг, у Playwright потрібно зробити locator унікальним або явно вибрати `first`; правило стосується і дій, і assertions.

Playwright для Java: основи та поглиблення →

Java · Основний курс · 50:30–55:00

Рефакторинг малими кроками та вимога динамічного пошуку

Після кожної невеликої заміни тест запускається знову. Такий короткий feedback loop показує, на якому саме кроці обгортка змінила поведінку, і не дозволяє накопичити кілька незалежних причин падіння. Для стабільної роботи wrapper має чекати готовності елемента перед дією. Простого eager `findElement` недостатньо: потрібен механізм, у якому пошук або відповідна дія беруть участь у polling loop очікування.

Selenium: очікування та мікрообгортки →
Запитати в чаті про «findElement» →