selenium 프레임 워 크 에서 driver.close()와 driver.quit()브 라 우 저 닫 기

Windows 시스템 에 서 는 selenium 프로그램 이 실 행 될 때마다 chromedriver.exe 프로 세 스 가 완전히 닫 히 지 않 습 니 다.

인터넷 에서 다음 과 같은 문장 을 참고 하 였 다.
selenium 에서 chrome 브 라 우 저 를 조작 하려 면 ChromeDriver 드라이버 가 있어 야 합 니 다.웹 드라이버 에서 브 라 우 저 를 끄 는 방법 은 두 가지 가 있 습 니 다.하 나 는 quit 이 고 하 나 는 close 입 니 다.

/**
* Close the current window, quitting the browser if it's the last window currently open.
*/
void close();
 
/**
* Quits this driver, closing every associated window.
*/
void quit();
상기 공식 성명 문 서 를 보면 close 방법 이 현재 창 을 닫 는 것 임 을 알 수 있 습 니 다.이 현 재 는 어떻게 이해 합 니까?driver 인 스 턴 스 가 작 동 하 는 페이지 를 현재 라 고 합 니 다.현재 창 에 tab 가 하나 밖 에 없다 면 이 close 방법 은 브 라 우 저 를 닫 는 것 과 같 습 니 다.quit 방법 은 모든 연 결 된 tab 창 을 직접 종료 하고 닫 는 것 입 니 다.따라서 close 방법 은 일반적으로 tab 를 닫 습 니 다.quit 방법 이 야 말로 우리 가 생각 하 는 브 라 우 저 를 완전히 닫 는 방법 입 니 다.이것 을 증명 하기 위해 서 우 리 는 하나의 예 로 시범 을 보 였 다.

package lessons;
 
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
 
public class FindElement_LinkText {
 
 public static void main(String[] args) throws Exception {
 
  System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
 
  WebDriver driver = new ChromeDriver();
  driver.manage().window().maximize();
 
  driver.get("https://www.baidu.com");
 
  driver.close();
  //driver.quit();
 }
 
}
마지막 두 줄 코드 를 로그아웃 하고 각각 실행 하 며 이 두 가지 방법의 실제 효 과 를 관찰 합 니 다.close 방법 을 사용 할 때 바 이 두 의 첫 페이지 인 tab 만 있 기 때문에 브 라 우 저 를 닫 습 니 다.그러나 작업 관리 자 를 보면 ChromeDriver 프로 세 스 가 메모리 에 존재 합 니 다.quit 방법 을 사용 하면 브 라 우 저 전체 가 직접 닫 히 고 ChromeDriver 프로 세 스 도 종 료 됩 니 다.
ChromeDriver 는 단일 작업 이나 브 라 우 저 를 자주 시작 하지 않 아 도 되 는 경량급 서비스 로 driver.quit()를 사용 하여 브 라 우 저 를 닫 으 면 ChromeDriver 프로 세 스 를 정상적으로 끝 낼 수 있 습 니 다.큰 테스트 세트 에서 잦 은 시작 과 닫 기 는 브 라 우 저 프로 세 스 가 닫 히 지 않 는 뚜렷 한 지연 시간 을 증가 시 킵 니 다.이 를 피하 기 위해 서 는 ChromeDriverService 를 통 해 ChromeDriver 프로 세 스 의 생사 를 제어 하고 사용 이 끝나 면 닫 는 효 과 를 얻 을 수 있 습 니 다.(Running the  server in a child process)。구체 적 인 실현 은 다음 과 같다.

ChromeDriverService service = new ChromeDriverService.Builder() .usingChromeDriverExecutable(new File("E:\\Selenium WebDriver\\chromedriver_win_23.0.1240.0\\chromedriver.exe")).usingAnyFreePort().build();
service.start();
driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.quit();
//    ChromeDriver   
service.stop();
위 에서 논의 한 것 은 모두 자바 버 전의 실현 입 니 다.python 에 있어 서 service 라 이브 러 리 를 사용 하여 chromedriver 의 오픈 과 닫 기 를 제어 합 니 다.

from selenium.webdriver.chrome.service import Service
만 들 때 chromedriver.exe 의 위 치 를 Service 의 XXX 부분 에 써 야 합 니 다.명령 행 방법 을 호출 해 야 합 니 다.그렇지 않 으 면 잘못 보고 하고 시작 하면 됩 니 다.

c_service = Service('xxx')
c_service.command_line_args()
c_service.start()
driver = webdriver.Chrome()
driver.get(http://www.baidu.com)
닫 을 때 close 대신 quit 를 사용 합 니 다.close 는 현재 페이지 만 닫 습 니 다.quit 는 드라이버 를 종료 하고 연 결 된 모든 창 을 닫 습 니 다.마지막 으로 실행 한 후에 닫 습 니 다.

driver.quit()
c_service.stop()
귀 찮 으 면 python 의 os 모듈 을 직접 사용 하여 다음 두 마디 로 프로 세 스 를 끝 낼 수 있 습 니 다.

os.system('taskkill /im chromedriver.exe /F')
os.system('taskkill /im chrome.exe /F')
selenium 프레임 워 크 에서 driver.close()와 driver.quit()가 브 라 우 저 를 닫 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 selenium 이 브 라 우 저 를 닫 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!

좋은 웹페이지 즐겨찾기