🐛 Частые ошибки

← К оглавлению урока

⚡ Топ-3 ошибки

  • Забыли playwright install → «Executable doesn't exist»
  • time.sleep() вместо авто-ожиданий → медленно и хрупко
  • Обычный assert вместо expect() → флакающие тесты

1. Не скачаны браузеры

Симптом: Executable doesn't exist at ...chromium...

После pip install pytest-playwright нужно отдельно скачать браузеры:

playwright install

2. time.sleep() вместо авто-ожиданий

# ❌ Плохо: фиксированная пауза — медленно и ненадёжно
import time
page.goto(url)
time.sleep(5)
page.get_by_role("button", name="OK").click()

# ✅ Хорошо: Playwright сам дождётся готовности
page.goto(url)
page.get_by_role("button", name="OK").click()

3. assert вместо web-first expect()

# ❌ Хрупко: проверяет мгновенный снимок, элемент мог не успеть появиться
assert page.locator(".toast").inner_text() == "Сохранено"

# ✅ Надёжно: expect ждёт до таймаута
from playwright.sync_api import expect
expect(page.locator(".toast")).to_have_text("Сохранено")

4. Sync и async API в одном проекте

У Playwright два API: синхронный (playwright.sync_api) и асинхронный (playwright.async_api). Для pytest-тестов используйте синхронный — он проще. Не смешивайте await и sync-вызовы.

5. Запуск без pytest-плагина

Фикстура page появляется только если установлен pytest-playwright. Если запускаете «сырой» Playwright (без pytest) — там нужно вручную создавать браузер через sync_playwright().

⚠️ Тексты ошибок зависят от версии — сверяйтесь с --help и документацией.