Как убить экземпляр WebDriver, оставив браузер открытым - PullRequest
0 голосов
/ 17 января 2019

Я занимаюсь разработкой автоматического веб-модульного теста с Selenium WebDriver. Я знаю, что могу использовать методы driver.close() и driver.quit(), чтобы закрыть браузер и выпустить хроматографический драйвер из памяти после теста, но это не очень хорошо для меня, потому что я хочу, чтобы браузер Chrome оставайтесь открытыми, чтобы я мог продолжить работу на сайте с того места, где закончился автоматический тест.

Проблема в том, что когда я закрываю браузер Chrome вручную, chromedriver.exe остается в памяти машины и не прерывается, поэтому в следующем тесте у меня будет еще один chromedriver.exe в памяти и так далее.

Будет здорово, если я скажу chromedriver.exe прекратить работу, когда закроется последнее требование Chrome. Как я объяснил, я не могу сделать это грамматически, потому что метод испытания уже закончился.

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

Просто чтобы прояснить ситуацию, я хочу, чтобы автоматизация до определенной точки, а затем продолжить вручную, после того, как часть автоматизации завершена. В этот момент я не могу получить доступ к экземпляру драйвера, чтобы использовать метод driver.quit() или driver.close(). Я использую Microsoft.NET TestMethod.

1 Ответ

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

Пара вещей:

  • driver.close(): используется для закрытия текущей страницы или браузера (если это единственная страница / вкладка), на котором находится фокус.

  • driver.quit(): используется для вызова конечной точки / shutdown, после чего экземпляры WebDriver и WebBrowser удаляются изящно, закрывая все страницы / вкладки / окна.

  • Подробное обсуждение о разнице между driver.close() и driver.quit() можно найти в этом обсуждении
  • Даже после вызова driver.quit(), если WebDriver / Веб-браузер все еще остается в памяти, вы можете убить их грубой силой после обсуждения обсуждение
  • Как только ваши Автоматизированные тесты завершены, чтобы завершить только двоичный файл ChromeDriver и оставить браузер Chrome открытым, вы можете использовать команду Поднимите ключевое слово Python , и вы можете использовать следующее решение (на основе Python) :

  • Кодовый блок:

    from selenium import webdriver
    import psutil
    
    driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://www.google.com/')
    try:
        raise ValueError('Test Execution completed ... Killing the ChromeDriver instance only')
    except Exception as error:
        print('Caught this error: ' + repr(error))
        PROCNAME = "chromedriver.exe" # or geckodriver.exe or IEDriverServer.exe
        for proc in psutil.process_iter():
            # check whether the process name matches
            if proc.name() == PROCNAME:
                proc.kill()
    print("Only ChromeDriver instance was killed and Chrome Browser instance left open")
    
  • Выход на консоль:

    Caught this error: ValueError('Test Execution completed ... Killing the ChromeDriver instance only',)
    Only ChromeDriver instance was killed and Chrome Browser instance left open
    
  • Здесь вы можете найти подробное обсуждение Вызов вручную (сгенерирование) исключения в Python

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