Selenium 브라우저 종료 - Selenium beulaujeo jonglyo

[C#] Selenium 프로그램 종료 후 종료되게 하기와 Close,Quit, Dispose 차이 알아보기

Selenium에서 종료하는 명령어는 총 3가지가 있습니다. driver.Dispose(); driver.Close(); driver.Quit(); 다 종료하다는 의미를 가지고 있는데 그 차이가 무엇인지 오늘 알아보고, 프로그램 종료 후 Selenium 서..

pgh268400.tistory.com

python으로 브라우저 컨트롤시에 selenium를 이용해서 컨트롤하는 경우

드라이버 생성을 특정함수 안에서 하게 되면 함수가 종료될때 브라우저도 같이 종료되는데,

가끔 종료되지 않았으면 할때 아래 방법대로 하면 됩니다.(다른 방법도 있을건데 잘 몰라서..)

핵심은 option에 add_experimental_option를 추가하고 "detach"를 True로 활성화 하면됩니다.

Edge의 경우(Chrome이나 다른 브라우저는 확인하지 않아서 잘 모름, 뭐 비슷하지 않을까 합니다.)

pip install msedge-selenium-tools

from msedge.selenium_toos import Edge, EdgeOption

이렇게 하면 from selenium import webdriver를 하지 않아도 됩니다.(당연히 msedgedriver.exe도 받지 않아도 되고)

edge_options = EdgeOptions()

edge_options.use_chromium = True

edge_options.add_experimental_option("detach", True)

browser = Edge(options=edge_options)

browser.get("http://~")

검증을 마친 후 브라우저를 닫는 것은 애플리케이션을 테스트할 때 일반적인 관행입니다. 이것은 Selenium을 사용하여 자동화 테스트를 수행하는 동안에도 따릅니다.

오늘은 브라우저를 닫는 다양한 방법에 대해 알아보겠습니다.

일러스트레이션 시나리오

브라우저를 닫고 webdriver session-id가 null인지 확인하는 시나리오를 가정해 보겠습니다.

접근 방식 1: close() 메서드 사용

첫 번째 접근 방식은 close() 메서드를 사용하는 것입니다. 활성 웹 브라우저를 닫습니다. 그러나 브라우저를 닫은 후 webdriver 세션이 종료되지 않습니다(session-id가 null이 아닌 상태로 유지됨).

구현
아래 코드가 포함된 Java 파일 BrwClose.java가 있습니다.

수입org.openqa.selenium. 웹드라이버;
수입org.openqa.selenium.chrome. 크롬드라이버;
수입org.openqa.selenium.remote. 원격웹드라이버;
수입org.openqa.selenium.remote. 세션 ID;
수입java.util.concurrent. 시간 단위;

공공의등급 Brw닫기 {
공공의공전무효의 기본([] 케이){

체계.setProperty("웹드라이버.크롬.드라이버", "크롬 드라이버");
웹드라이버 브라우져 =새로운 크롬드라이버();
브루.관리하다().시간 초과().묵시적으로 기다림(3, 타임유닛.);
브루.가져 오기(" https://www.selenium.dev/");
브루.닫다();
세션 ID ID =((원격웹드라이버) 브루).getSessionId();
체계..인쇄("닫기 메서드 후 세션 ID 가져오기: "+ ID);
}

}

구현을 완료한 후 이 Java 파일을 저장하고 실행해야 합니다.

Selenium 브라우저 종료 - Selenium beulaujeo jonglyo

위의 코드 2~6행은 Selenium에 필요한 Java 가져오기입니다.

8행과 9행은 클래스 이름과 정적 개체 선언을 설명합니다.

11행에서 Selenium webdriver에 프로젝트 디렉토리 내에서 chrome 드라이버 실행 파일을 검색하도록 지시합니다.

12~14행에서 먼저 Selenium webdriver 객체를 만들고 brw 변수에 저장합니다. 그런 다음 3초 동안 webdriver 개체에 대한 암시적 대기를 도입했습니다. 마지막으로 개봉하는

https://www.selenium.dev/ Chrome 브라우저에서 애플리케이션.

15행에서 ​​close() 메서드를 사용하여 Chrome 브라우저를 닫았습니다.

16~17행은 getSessionId() 메서드를 사용하여 브라우저를 닫은 후 웹드라이버 세션의 현재 세션 ID를 캡처하는 데 사용됩니다.

산출
위의 코드를 실행하면 Get session Id after close method: 83e173edb5467b19560ac9368c4dc51-라는 텍스트를 출력으로 얻었습니다. 따라서 활성 브라우저가 닫히지만 웹 드라이버 세션은 활성 상태로 유지됩니다(null이 아닌 session-id를 얻음).

Selenium 브라우저 종료 - Selenium beulaujeo jonglyo

접근 방식 2: quit() 메서드 사용

두 번째 접근 방식은 quit() 메서드를 사용하는 것입니다. 열려 있는 모든 브라우저를 닫습니다. 또한 브라우저를 닫으면 webdriver session-id가 null이 됩니다.

접근 방식 2로 구현
아래 코드가 포함된 Java 파일 BrwQuit.java가 있습니다.

수입org.openqa.selenium. 웹드라이버;
수입org.openqa.selenium.chrome. 크롬드라이버;
수입org.openqa.selenium.remote. 원격웹드라이버;
수입org.openqa.selenium.remote. 세션 ID;
수입java.util.concurrent. 시간 단위;

공공의등급 Brw종료 {
공공의공전무효의 기본([] 케이){

체계.setProperty("웹드라이버.크롬.드라이버", "크롬 드라이버");
웹드라이버 브라우져 =새로운 크롬드라이버();
브루.관리하다().시간 초과().묵시적으로 기다림(3, 타임유닛.);
브루.가져 오기(" https://www.selenium.dev/");
브루.그만두 다();
세션 ID ID =((원격웹드라이버) 브루).getSessionId();
체계..인쇄("종료 방법 후 세션 ID 가져오기: "+ ID);
}

}

구현을 게시합니다. 이 Java 파일을 저장하고 실행해야 합니다.

Selenium 브라우저 종료 - Selenium beulaujeo jonglyo

위의 코드 2~6행은 Selenium에 필요한 Java 가져오기입니다.

8행과 9행은 클래스 이름과 정적 객체 선언을 설명합니다.

11행에서 Selenium webdriver에 프로젝트 디렉토리 내에서 chrome 드라이버 실행 파일을 검색하도록 지시합니다.

12~14행에서 먼저 Selenium webdriver 객체를 만들고 brw 변수에 저장합니다. 그런 다음 3초 동안 webdriver 개체에 대한 암시적 대기를 도입했습니다. 마지막으로 개봉하는 https://www.selenium.dev/ Chrome 브라우저에서 애플리케이션.

15행에서 ​​우리는 quit() 메소드를 사용하여 Chrome 브라우저를 닫았습니다.

16~17행은 getSessionId() 메서드를 사용하여 브라우저를 종료한 후 웹드라이버 세션의 현재 세션 ID를 캡처하는 데 사용됩니다.

산출
위 코드 실행 시 출력으로 Get session Id after quit method: null 텍스트를 얻었습니다. 따라서 우리는 브라우저가 닫히고 webdriver 세션이 종료되는 것을 볼 수 있습니다(null session-id를 얻음에 따라).

Selenium 브라우저 종료 - Selenium beulaujeo jonglyo

결론

따라서 우리는 Selenium을 사용하여 브라우저를 닫는 방법을 보았습니다. 먼저 close() 메서드를 사용했고 두 번째 방법은 quit() 메서드를 기반으로 합니다. 또한 quit() 메서드가 Selenium 웹 드라이버 세션을 종료하는 데 도움이 되는 방법도 보았습니다.