Увеличение памяти при длительной работе веб-драйвера с использованием Selenium Java

Я использую Селен Java для очистки веб-страниц, в основном приложение создает WebDriver и использует его все время для всех требуемых страниц (каждые 1 или 2 секунды он будет вызывать get() для новой страницы и извлекать связанный контент).).

Я использую Firefox безголовый режим, как это:

String driverPath = this.config.getString("browser.firefox.driverPath");

FirefoxBinary firefoxBinary = new FirefoxBinary();
if (useHeadlessMode) {
    firefoxBinary.addCommandLineOptions("--headless");
}
System.setProperty("webdriver.gecko.driver", driverPath);
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setBinary(firefoxBinary);
webDriver = new FirefoxDriver(firefoxOptions);

Я понял, что когда приложение работает в течение 2 часов, оно будет использовать до 8 ГБ памяти, а вызов get() станет очень медленным (это может занять около 10 секунд).

Мой вопрос заключается в том, что при создании WebDriver мне не хватает какой-либо конфигурации? Или любое другое решение для поддержания низкого уровня использования памяти, так как я планирую запустить несколько (~100 WebDrivers) после развертывания приложения в облаке.

Решение, которое я рассматриваю, заключается в том, что для определенного количества операций выполните driver.quit() для текущего драйвера и инициализируйте новый. Это звучит разумно?

1 ответ

Прежде всего вы должны понимать, что всякий раз, когда вы запускаете браузер с помощью веб-драйвера, он создает временный профиль в вашем каталоге "Temp", который потребляет вашу память.

Чтобы избежать этого, вы можете сделать 2 вещи:

  • Удалить данные из каталога "Temp".
  • Создайте профиль для своего браузера и используйте его так, чтобы при каждом запуске браузера он не создавал новый профиль и не занимал больше памяти.

Удалить данные из каталога "Temp":

  1. Откройте "Run" winodow, нажав -> "Windows key" + "r"
  2. Введите "%TEMP%" и нажмите кнопку "ВВОД"
  3. Выделите все файлы и удалите постоянно с помощью "Shift + Delete"

Создайте профиль для вашего браузера:

  1. Прежде всего закройте Firefox, если он открыт.
  2. Откройте "Run" winodow, нажав -> "Windows key" + "r"
  3. Введите " firefox.exe –p" и нажмите кнопку "ВВОД". Примечание. Если он не открывается, попробуйте использовать полный путь, заключенный в кавычки.

    • В 32-разрядной версии Windows: "C:Program FilesMozilla Firefox.exe" –p
    • В 64-разрядной версии: Windows: "C:Program Files(x86)Mozilla Firefox.exe" –p
  4. Откроется диалоговое окно с именем Firefox - выберите профиль пользователя

  5. Выберите опцию "Создать профиль" из окна, и откроется мастер. Нажмите на следующий
  6. Дайте название вашего профиля, который вы хотите создать, и нажмите кнопку Готово
  7. Теперь ваш профиль готов, вы можете выбрать свой профиль и открыть Firefox.
  8. Добавьте этот код в вашу программу:

    ProfilesIni profile = new ProfilesIni();
    
    
    FirefoxProfile myprofile = profile.getProfile("Your_Profile_Name");
    
    
    // Initialize Firefox driver
    
    
    WebDriver driver = new FirefoxDriver(myprofile); 
    
Другие вопросы по тегам