복붙노트

[PYTHON] Selenium : driver.quit ()를 호출하지 않고 geckodriver 프로세스가 PC 메모리에 영향을 미치지 않게하는 방법?

PYTHON

Selenium : driver.quit ()를 호출하지 않고 geckodriver 프로세스가 PC 메모리에 영향을 미치지 않게하는 방법?

다음과 같은 테스트가 있습니다.

 import //needed imports

 public class TestClass{
    WebDriver driver;

    @Before
    public void setUp() {
       //some code
    }

    @Test
    public void test1() {
       //some code, including init of driver (geckodriver)
    }

   //@After
   // public void tearDown() {
   //  driver.quit();
   //}
}

그래서, 나는 geckodriver를 방문하여 firefox 인스턴스를 사용하여 테스트를 성공적으로 수행했습니다. 하지만 각 실행 후에 파이어 폭스 창을 닫지 않기를 원한다. 왜냐하면 필자가 가지고있는 것을 분석하고 테스트를 실행 한 후에 필요에 따라 수정하기를 원하기 때문이다. (나는 나중에 uncomment driver.quit ()에 갈 것이다). 동시에 드라이버를 닫지 않고 호출 할 때마다 내 PC의 RAM에 과도하게 영향을 미칩니다 (테스트 후 브라우저를 수동으로 닫았는지 여부는 문제가되지 않습니다).

그래서, 질문은 : "geckodriver"의 프로세스를 닫을 수있는 방법이 있습니다. (더 정확하게 말하자면, "geckodriver"의 geckodriver.exe 프로세스를 닫을 것입니다.) 테스트가 끝난 후 브라우저를 닫지 않을 것입니까? 예를 들어, 테스트 자체에 어떤 메소드를 추가하는 것 ... 이것은 내 작업 / 테스트 자체에 영향을 미치지 않습니다. 단지 최적화를 추가하고 싶습니다.

해결법

  1. ==============================

    1.귀하의 질문에 대한 의견을 driver.quit () 그냥 각 실행 후 파이어 폭스 창을 닫으려고하지 않기 때문에, 나는 단지 내가 모범 사례의 일부가되지 않습니다 분석하고 싶습니다.

    귀하의 질문에 대한 의견을 driver.quit () 그냥 각 실행 후 파이어 폭스 창을 닫으려고하지 않기 때문에, 나는 단지 내가 모범 사례의 일부가되지 않습니다 분석하고 싶습니다.

    자세한 분석을 위해 로그 항목을 만들고 스냅 샷을 만들 수 있습니다.

    베스트 프랙티스에 따라 Selenium을 자동화하는 동안 tearDown () {} 내에서 quit () 메서드를 호출해야합니다. quit () 호출은 { "flags": [ "eForceQuit"]}를 사용하여 "quit"명령을 보내 현재의 브라우징 세션을 삭제하고 마지막으로 / shutdown EndPoint에서 GET 요청을 보냅니다. 아래는 예제입니다.

    1503397488598   webdriver::server   DEBUG   -> DELETE /session/8e457516-3335-4d3b-9140-53fb52aa8b74 
    1503397488607   geckodriver::marionette TRACE   -> 37:[0,4,"quit",{"flags":["eForceQuit"]}]
    1503397488821   webdriver::server   DEBUG   -> GET /shutdown
    

    따라서 quit () 메서드를 호출하면 웹 브라우저 세션과 WebDriver 인스턴스가 완전히 종료됩니다. 따라서 오버 헤드가 될 추가 단계를 통합 할 필요가 없습니다.

    여전히 실행하려는 경우 매달린 WebDriver 인스턴스를 종료합니다. 예 : GeckoDriver.exe 인스턴스를 사용하면 다음 코드 블록 중 하나를 사용하여 매달려있는 WebDriver 인스턴스를 제거 할 수 있습니다.

  2. from https://stackoverflow.com/questions/47999568/selenium-how-to-stop-geckodriver-process-impacting-pc-memory-without-calling by cc-by-sa and MIT license