Skip to content

fix: исправить определение пути и ревизии браузеров Playwright - #320

Open
ivakorn wants to merge 1 commit into
Duff89:masterfrom
ivakorn:master
Open

fix: исправить определение пути и ревизии браузеров Playwright#320
ivakorn wants to merge 1 commit into
Duff89:masterfrom
ivakorn:master

Conversation

@ivakorn

@ivakorn ivakorn commented Aug 24, 2026

Copy link
Copy Markdown

Ваша ОС

macOS Monterey 12.7.6 (darwin)

Версия скрипта

3.2.22

Способ запуска

python AvitoParser.py

Логи ошибки

В консоли/логе приложения выводятся только:

Playwright уже установлен, хорошо
Не удалось запустить графический браузер

Реальная причина скрыта «глухим» except: в prompt_user_login.py:120. При снятии этого except выводится настоящая ошибка:

BrowserType.launch: Executable doesn't exist at /Users/username/AppData/Local/ms-playwright/chromium_headless_shell-1169/chrome-mac/headless_shell

Причина

В playwright_setup.py путь к браузерам жёстко переопределяется на Windows-путь:

ms_playwright_dir = os.path.join(
    os.path.expanduser("~"), "AppData", "Local", "ms-playwright"
)
os.environ["PLAYWRIGHT_BROWSERS_PATH"] = ms_playwright_dir

Такой папки на macOS не существует — браузеры по умолчанию лежат в ~/Library/Caches/ms-playwright. Из-за этого Playwright ищет браузеры не там и launch() падает.

Дополнительно проверка установки некорректна: она проверяет лишь наличие драйвера node, а не нужной ревизии браузера, поэтому браузеры автоматически не доустанавливаются.

Ожидаемое поведение

Браузер запускается, и при отсутствии нужной ревизии (например, chromium-1169 для playwright==1.52.0) она устанавливается автоматически.

Шаги для воспроизведения

  1. pip install -r requirements.txt
  2. Запустить AvitoParser.py
  3. Нажать «Войти в аккаунт»

Предлагаемое исправление

Выбирать путь к браузерам по ОС и проверять наличие именно требуемой ревизии через executable_path:

def _get_browsers_path() -> str:
    home = os.path.expanduser("~")
    if os.name == "nt":  # Windows
        return os.path.join(home, "AppData", "Local", "ms-playwright")
    if sys.platform == "darwin":  # macOS
        return os.path.join(home, "Library", "Caches", "ms-playwright")
    # Linux и прочие
    return os.path.join(home, ".cache", "ms-playwright")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant