Утечки памяти при работе с IEDriverServer и Selenium на C # с IE11 - PullRequest
0 голосов
/ 03 января 2019

Я использую C # -Selenium на IE11 в Windows 7/10. Во время работы скрипта память IE11 продолжает увеличиваться, пока не достигнет 1,5 ГБ памяти. Заметьте, я не могу ничего закрыть или выйти, так как мне нужно, чтобы мой тест продолжался. Проблема в том, что IE11 продолжает увеличиваться по мере прохождения теста

Для сравнения: при запуске одного и того же сценария с QTP ничего этого не происходит. 32-разрядная версия WebDriver: 3.8 и 3.141

Веб-приложение само по себе является правильным Есть ли у вас какие-либо идеи, где мне начать искать решение проблемы?

Спасибо

Пытался уменьшить мой код, нюхая на утечки памяти

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Некоторые примеры кода WebDriver и Веб-браузер Процесс инициализации / закрытия дал бы нам подсказку, почему при использовании IEDriverServer и IE11 память продолжает увеличиваться, пока не достигнет 1,5 ГБ .

Возможно, в соответствии с лучшими практиками всегда вызывайте driver.quit() в методе tearDown(){} для закрытия и уничтожения экземпляров WebDriver и Web Client изящно следующим образом:

driver.quit() // Python
// or
driver.quit(); // Java
// or
driver.Quit(); // DotNet

Подробное обсуждение можно найти в Веб-драйвер PhantomJS остается в памяти

Включение процессов IEDriverServer по-прежнему не уничтожено и не удалено, вам может потребоваться убить процессы из списка задач.

  • Python Solution ( Кроссплатформенная ):

    import os
    import psutil
    
    PROCNAME = "IEDriverServer" # or chromedriver or geckodriver
    for proc in psutil.process_iter():
        # check whether the process name matches
        if proc.name() == PROCNAME:
            proc.kill()
    

Подробное обсуждение можно найти в Selenium: Как остановить процесс geckodriver, влияющий на память ПК, без вызова driver.quit ()?

Дополнительно

0 голосов
/ 05 января 2019

После долгих поисков я несколько решил проблему, отключив «Отладку сценариев (Internet Explorer)» в IE11 в меню «Сервис» -> «Параметры» -> «Дополнительно».

в моем Selenium Code есть прослушивание событий ScriptExecuted (что является обязательным в моем коде):

    firingDriver.ScriptExecuted += firingDriver_ScriptExecuted;

Может ли это быть связано?

Итак, пока я понятия не имею, почему отключение отладки сценариев значительно уменьшило утечки памяти. При выполнении того же сценария QTP утечка памяти отсутствует.

и если у кого-то есть идея, я бы с удовольствием ее услышал

Спасибо!

0 голосов
/ 03 января 2019

Проблема может заключаться в том, что ваши тестовые сценарии фактически не закрывают браузер (ы).

Я столкнулся с ошибкой в ​​IE селена, из-за которой он не закрывал браузер с .close или .quite.Это означает, что он откроет много окон, и это может вызвать утечку памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...