Увеличение памяти при длительной работе веб-драйвера с использованием Selenium Java - PullRequest
0 голосов
/ 24 февраля 2019

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

Я использую режим 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 Ответ

0 голосов
/ 24 февраля 2019

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

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

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

Удалите данныеиз каталога «Temp»:

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

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

  1. Прежде всего закройте Firefox, если он открыт.
  2. Откройте «Run» winodow, нажав -> «Клавиша Windows» + «r»
  3. Type "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. Теперь ваш профиль готов, вы можете выбрать свой профиль и открыть Firefox.
  7. Добавьте этот код в вашу программу:

    ProfilesIni profile = new ProfilesIni();
    
    
    FirefoxProfile myprofile = profile.getProfile("Your_Profile_Name");
    
    
    // Initialize Firefox driver
    
    
    WebDriver driver = new FirefoxDriver(myprofile); 
    
...