Как запустить BAS Chromium с Puppeteer и сделать UI видимым

    При попытке использовать браузер из проекта BAS (Browser Automation Studio) с библиотекой Puppeteer разработчики часто сталкиваются с проблемой: сам Chromium запускается, скриншоты создаются, но окно браузера остаётся невидимым. В этой статье мы разберём причины такого поведения и предложим рабочие решения.

    Почему BAS Chromium не показывает UI при запуске через Puppeteer

    BAS использует модифицированную сборку Chromium, которая оптимизирована для автоматизации. По умолчанию эта сборка может запускаться с флагами, подавляющими отображение графического интерфейса, даже если параметр headless: false явно указан. Основные причины:

    • Специфические флаги BAS - в исполняемом файле могут быть жёстко зашиты аргументы, включающие невидимый режим.
    • Конфликт параметров - некоторые флаги, переданные в args, могут переопределять настройки отображения.
    • Отсутствие ключевого флага --enable-gpu - на некоторых системах без него UI не рендерится.

    Как исправить: пошаговая настройка Puppeteer для BAS Chromium

    1. Проверьте путь к исполняемому файлу

    Убедитесь, что executablePath указывает именно на worker.exe из папки BAS. Обычно это D:/BAS/chromium/chrome/worker.exe.

    2. Минимизируйте кастомные аргументы

    Начните с минимального набора флагов. Постепенно добавляйте только те, которые действительно нужны. Пример базовой конфигурации:

    const puppeteer = require('puppeteer');
    (async () => {
      const browser = await puppeteer.launch({
        executablePath: 'D:/chromium/chrome/worker.exe',
        headless: false,
        args: ['--no-sandbox', '--disable-setuid-sandbox']
      });
      const page = await browser.newPage();
      await page.goto('https://example.com');
      await page.screenshot({ path: 'test.png' });
      await browser.close();
    })();

    3. Добавьте флаг принудительного рендеринга

    Если UI всё ещё не отображается, попробуйте добавить --enable-gpu и --disable-software-rasterizer:

    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--enable-gpu',
      '--disable-software-rasterizer'
    ]

    4. Используйте отладку через удалённый порт

    Запустите браузер с флагом --remote-debugging-port=9222 и подключитесь к нему через puppeteer.connect(). Это иногда обходит внутренние ограничения BAS.

    Альтернативное решение: используйте стандартный Chromium

    Если BAS-сборка Chromium продолжает работать в невидимом режиме, рассмотрите вариант использования обычного Chromium, установленного через puppeteer или системного Chrome. Это гарантирует полный контроль над отображением UI.

    Часто задаваемые вопросы

    Часто задаваемые вопросы