Telegram

**Переход c Selenium на Playwright**

Изображение из Telegram
**Переход c Selenium на Playwright**

У меня имеется мой парсер для особых сервисов, который имеет в себе классический зоопарк с selenium (xvfb, конкретная версия ChromeDriver), а также постоянные проблемы с таймаутами и нестабильностью. В общем, всё как обычно.... а Xvfb было решением, которое... позволяет компилировать wasm скрипты

Я очень давно хотел его выкинуть. и наконец-то я близко у цели. Один `playwright install chromium` — и всё работает. Нативный async/await вместо костылей с WebDriverWait. Dockerfile сократился. Были улучшены воркеры, взамен самописных скриптов

Playwright действительно быстрее. Не на 10%, а ощутимо. Особенно заметно на больших объемах данных. Код стал чище — вместо
`WebDriverWait(driver, 20).until(expected_conditions.presence_of_element_located((By.ID, "element")))`
теперь просто `await page.wait_for_selector("#element")`

Не нужно гадать, почему браузер упал — Playwright просто говорит, что не так. Docker образ стал легче — я убрал xvfb, кучу системных пакетов и прочую ерунду. Теперь базовый образ python slim + Playwright.

Технически тоже всё упростилось. Браузер теперь инициализируется один раз на воркер и переиспользуется. Конфиги настраиваются через действительно конфиги, а не через аргументы. а их там аж 30 chrome параметров наберется. Скриншоты делаются встроенными методами

Да, можно было написать код на Selenium лучше, делать больше оберток и покупать лучше сервера, но он мне очень сильно надоел...