이들의 차이점은 무엇입니까
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
어느 것을 언제 사용해야합니까?
이들의 차이점은 무엇입니까
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
어느 것을 언제 사용해야합니까?
답변:
사람들이해서는 안될 때 Close ()를 사용하는 것을 본 좋은 질문입니다. Selenium Client & WebDriver C # Bindings의 소스 코드에서 다음을 발견했습니다.
webDriver.Close()
-드라이버가 중점을 둔 브라우저 창을 닫습니다 webDriver.Quit()
-Dispose () 호출 webDriver.Dispose()
모든 브라우저 창을 닫고 세션을 안전하게 종료합니다아래 코드는 드라이버 개체를 삭제하고 세션을 종료하며 테스트 중 실패했는지 여부에 관계없이 테스트 중에 열린 모든 브라우저를 닫습니다.
public IWebDriver Driver;
[SetUp]
public void SetupTest()
{
Driver = WebDriverFactory.GetDriver();
}
[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}
요약하면 프로그램을 종료하기 전에 Quit () 또는 Dispose ()가 호출되는지 확인하고 수행중인 작업이 확실하지 않으면 Close () 메서드를 사용하지 마십시오.
참고
내 VM에 하드 드라이브 공간이 부족한 이유를 파악하려고 할 때이 질문을 발견했습니다. Quit () 또는 Dispose ()가 모든 실행에서 호출되지 않는 예외가 발생하여 appData 폴더가 하드 드라이브를 채우게됩니다. 그래서 우리는 Quit () 메소드를 올바르게 사용했지만 코드에 접근 할 수 없었습니다. 요약 모든 코드 경로가 예외 안전 패턴을 사용하여 관리되지 않는 개체를 정리하거나 IDisposable을 구현해야합니다.
또한
RemoteDriver의 경우 Quit () 또는 Dispose ()를 호출하면 Selenium 서버에서 세션이 닫힙니다. 세션이 닫히지 않으면 해당 세션의 로그 파일이 메모리에 남아 있습니다.
Quit()
으로 리디렉션됩니다Dispose()
driver.close
및 driver.quit
셀레늄 WebDriver의 브라우저 세션을 닫는 두 가지 방법이 있습니다. 테스트 실행에서 두 가지를 모두 이해하고 각 방법을 사용할시기를 아는 것이 중요합니다. 따라서 두 가지 방법 모두에 대해 밝히려고 노력했습니다.
driver.close
-이 방법은 포커스가 설정된 브라우저 창을 닫습니다. 이 방법의 익숙한 이름에도 불구하고 인터페이스를 구현 WebDriver
하지 않습니다 .AutoCloseable
driver.quit
–이 메소드는 기본적으로 driver.dispose
이제 내부 메소드를 호출 하여 모든 브라우저 창을 닫고 WebDriver 세션을 정상적으로 종료합니다.
driver.dispose
-앞에서 언급했듯이 WebDriver의 내부 방법은 다른 답변에 따라 자동으로 삭제되었습니다-확인 필요. 이전 방법 중 하나가 대부분의 사용 사례에서 작동하므로이 방법에는 실제 테스트 워크 플로에서 실제로 사용 사례가 없습니다.
사용 사례 : driver.quit
프로그램을 종료 할 때마다 사용해야합니다 . 열려있는 모든 브라우저 창을 닫고 WebDriver 세션을 종료합니다. driver.quit
프로그램 종료시 사용하지 않으면 WebDriver 세션이 제대로 닫히지 않고 파일이 메모리에서 지워지지 않습니다. 메모리 누수 오류가 발생할 수 있습니다.
위의 설명은 차이점을 설명해야합니다. driver.close
driver.quit
WebDriver 와 메소드 . 도움이 되셨기를 바랍니다.
다음 웹 사이트는 셀레늄 테스트에 대한 좋은 팁이 있습니다 링크
close () :-동일한 드라이버 인스턴스로 여러 개의 브라우저 창을 열었다 고 가정합니다. 이제 드라이버 인스턴스에서 close ()를 호출하면 드라이버 인스턴스가 가리키는 현재 창이 닫힙니다. 그러나 드라이버 인스턴스는 여전히 메모리에 남아 있으며 열려있는 다른 브라우저 창을 처리하는 데 사용할 수 있습니다.
quit () :-드라이버 인스턴스에서 quit ()을 호출하고 하나 이상의 브라우저 창이 열려 있으면 열려있는 모든 브라우저 창이 닫히고 드라이버 인스턴스가 가비지 수집됩니다. 즉, 메모리에서 제거됩니다. 이제 quit ()를 호출 한 후이 드라이버 인스턴스를 사용하여 다른 작업을 수행 할 수 없습니다. 그렇게하면 예외가 발생합니다.
dispose () :-WebDriver 인스턴스에 대한 dispose 메서드가 없다고 생각합니다.
이 셀레늄 공식 java doc 링크 를 참조하십시오.
close () 는 현재 포커스가있는 브라우저 창을 닫는 웹 드라이버 명령입니다. 이 방법의 익숙한 이름에도 불구하고 인터페이스를 구현 WebDriver
하지 않습니다 .AutoCloseable
자동화 프로세스 중에 브라우저 창이 두 개 이상 열려 있으면 close () 명령은 해당 시점에 포커스가있는 현재 브라우저 창만 닫습니다. 나머지 브라우저 창은 닫히지 않습니다. 다음 코드를 사용하여 현재 브라우저 창을 닫을 수 있습니다.
떠나다() 는 driver.dispose 메소드를 호출하는 웹 드라이버 명령으로, 모든 브라우저 창을 닫고 WebDriver 세션을 종료합니다. 프로그램 종료시 quit ()를 사용하지 않으면 WebDriver 세션이 제대로 닫히지 않고 파일이 메모리에서 지워지지 않습니다. 메모리 누수 오류가 발생할 수 있습니다.
자동화 프로세스가 단일 브라우저 창만 열면 close () 및 quit () 명령이 같은 방식으로 작동합니다. 자동화 중에 두 개 이상의 브라우저 창이 열리면 기능이 다릅니다.
이상 참조 : 여기를 클릭하십시오
Dispose 명령 Dispose ()는 Quit ()을 호출해야합니다. 그러나 PhantomJS를 수동으로 닫을 때까지 모든 후속 조치가 차단된다는 점에서도 동일한 문제점이 있습니다.
참조 링크
driver.close ()와 driver.quit ()의 차이점
driver.close – 포커스가 설정된 브라우저 창을 닫습니다.
driver.quit – 기본적으로 driver.dispose 메소드를 호출하여 모든 브라우저 창을 닫고 WebDriver 세션을 정상적으로 종료합니다.
셀레늄 웹 드라이버
WebDriver.Close()
이 방법은 현재 열린 창을 닫는 데 사용됩니다. 드라이버가 포커스를 둔 현재 열린 창을 닫습니다.
WebDriver.Quit()
이 메소드는 WebDriver 인스턴스를 파기하는 데 사용됩니다. 해당 드라이버와 관련된 모든 브라우저 창을 닫고 세션을 안전하게 종료합니다. WebDriver.Quit ()는 Dispose를 호출합니다.
WebDriver.Dispose()
이 방법은 모든 브라우저 창을 닫고 세션을 안전하게 종료합니다