Увеличение памяти при длительной работе веб-драйвера с использованием 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":
- Откройте "Run" winodow, нажав -> "Windows key" + "r"
- Введите "%TEMP%" и нажмите кнопку "ВВОД"
- Выделите все файлы и удалите постоянно с помощью "Shift + Delete"
Создайте профиль для вашего браузера:
- Прежде всего закройте Firefox, если он открыт.
- Откройте "Run" winodow, нажав -> "Windows key" + "r"
Введите " firefox.exe –p" и нажмите кнопку "ВВОД". Примечание. Если он не открывается, попробуйте использовать полный путь, заключенный в кавычки.
- В 32-разрядной версии Windows: "C:Program FilesMozilla Firefox.exe" –p
- В 64-разрядной версии: Windows: "C:Program Files(x86)Mozilla Firefox.exe" –p
Откроется диалоговое окно с именем Firefox - выберите профиль пользователя
- Выберите опцию "Создать профиль" из окна, и откроется мастер. Нажмите на следующий
- Дайте название вашего профиля, который вы хотите создать, и нажмите кнопку Готово
- Теперь ваш профиль готов, вы можете выбрать свой профиль и открыть Firefox.
Добавьте этот код в вашу программу:
ProfilesIni profile = new ProfilesIni(); FirefoxProfile myprofile = profile.getProfile("Your_Profile_Name"); // Initialize Firefox driver WebDriver driver = new FirefoxDriver(myprofile);