Можно ли предотвратить загрузку последнего браузера и драйвера в Selenium (Java)?

Вопрос или проблема

У меня есть образ docker, который используется для запуска тестов selenium. Проблема в том, что selenium постоянно загружает последнюю версию браузера (chrome) и драйвера (chromedriver), что приводит к большому объему трафика.

Я пытался скачать chrome и chromedriver, используя selenium-manager как из пакетов python, так и из java в моем Dockerfile. Хотя файлы загружаются, при запуске тестов они загружаются снова. Я также пытался установить следующие переменные окружения в моем Dockerfile:

```
ENV SE_OFFLINE=true
ENV SE_AVOID_BROWSER_DOWNLOAD=true
ENV SE_FORCE_BROWSER_DOWNLOAD=false
ENV SE_TTL=0

И, наконец, я попытался установить переменную окружения SE_MANAGER_PATH и использовать setBinary в моем коде. Кажется, что браузер и драйвер все равно загружаются каждый раз, когда запускается набор тестов с использованием образа docker (в частности, экземпляра fargate).

Есть идеи, как это решить?



Ответ или решение

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

  1. Использование локальных бинарников:

    • Вместо того чтобы позволять Selenium загружать браузер и драйвер каждый раз, вы можете скачать необходимые бинарники (Chrome и Chromedriver) вручную и добавить их в ваш Docker-образ. Вы можете найти соответствующие версии здесь для Chrome и здесь для Chromedriver.
  2. Добавление бинарников в Dockerfile:

    • Сначала добавьте скачанные файлы в директорию вашего проекта и затем используйте следующую строку в вашем Dockerfile для копирования их в контейнер:
      COPY path/to/local/chrome /usr/bin/chrome
      COPY path/to/local/chromedriver /usr/bin/chromedriver
      RUN chmod +x /usr/bin/chrome /usr/bin/chromedriver
    • Убедитесь, что пути к файлам правильные и что они имеют соответствующие права на выполнение.
  3. Настройка переменных окружения:

    • Убедитесь, что вы установили все нужные переменные окружения в вашем Dockerfile:
      ENV SE_OFFLINE=true
      ENV SE_AVOID_BROWSER_DOWNLOAD=true
      ENV SE_FORCE_BROWSER_DOWNLOAD=false
  4. Настройка WebDriver:

    • В вашем Java-коде настройте WebDriver, чтобы он указывал на локальные бинарники:
      System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
      ChromeOptions options = new ChromeOptions();
      options.setBinary("/usr/bin/chrome"); // укажите путь для Chrome, если требуется
      WebDriver driver = new ChromeDriver(options);
  5. Кэширование:

    • Также можно рассмотреть возможность использования Docker-кэширования. Убедитесь, что ваше состояние образа не изменяется, когда вы не вносите изменения в браузер или драйвер. Это может помочь сократить время сборки и сетевой трафик.
  6. Тестирование:
    • После внесения всех изменений, протестируйте ваше приложение, чтобы убедиться, что браузер и драйвер больше не загружаются. Это позволит минимизировать трафик и ускорить запуск тестов.

Эти шаги должны помочь вам избежать повторной загрузки Chrome и Chromedriver при каждом запуске ваших тестов в Docker. Убедитесь, что используете совместимые версии браузера и драйвера для корректной работы.

Оцените материал
Добавить комментарий

Капча загружается...