Playwright: Отсутствие зависимостей для запуска браузеров на AWS EC2 (Ubuntu)

Я пытаюсь использовать Playwright в проекте на Python для автоматизации действий в браузере. Настройка отлично работает на моей локальной машине, но при развертывании проекта на экземпляре AWS EC2 возникают проблемы с отсутствующими системными зависимостями.

Окружение: AWS EC2 Instance: Ubuntu 20.04 Python: 3.12 Версия Playwright: 1.45.1

Пройденные шаги: Установлен Playwright:

pip install playwright

Установленные браузеры Playwright:

python -m playwright install

Попробовали установить системные зависимости:

sudo npx playwright install-deps

Сообщения об ошибках: При попытке запустить Playwright на экземпляре AWS EC2 я по-прежнему получаю следующее сообщение об ошибке: "BrowserType.launch: Executable doesn't exist at /root/.cache/ms-playwright/webkit-2035/pw_run.sh\n╔════════════════════════════════════════════════════════════╗\n║ Похоже, что Playwright был только что установлен или обновлен. ║\n║ Пожалуйста, выполните следующую команду для загрузки новых браузеров: ║\n║ ║\n║ playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝"

Вот скриншот ошибки: Ошибка на Postman

Сниппет кода:

import asyncio
import re
import logging
import time
from playwright.async_api import async_playwright

async with async_playwright() as p:
        browser = await p.webkit.launch(headless=True)
        for attempt in range(retries):
            try:
                context = await browser.new_context(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
                page = await context.new_page()
                
                for nav_attempt in range(retries):
                    try:
                        await page.goto(url, timeout=30000)  # Reduced timeout for faster retries
                        logger.info(f"Navigated to {url}")
                        break
                    except Exception as e:
                        logger.error(f"Navigation attempt {nav_attempt + 1}/{retries} failed: {e}")

Дополнительная информация: Перед выполнением команд активируется виртуальная среда. Настройка отлично работает на моей локальной машине. Многократная переустановка Playwright и зависимостей на экземпляре AWS EC2 не помогла решить проблему.

Вопрос: Как я могу устранить эти недостающие зависимости и успешно запустить Playwright на моем экземпляре AWS EC2?

Вернуться на верх