반응형

selenium을 함수에서 사용할 경우. 자동으로 꺼지는 현상이 있다. 

이를 방지하는 아주 간단한 방법이 있다. 일단 현상부터 알아보자.

 

기본적인 chrome driver로  구글을 켜는 함수를 작성해보자.

from selenium import webdriver
import os
import chromedriver_autoinstaller as AutoChrome
import shutil

def selenium_test():
    chrome_ver = AutoChrome.get_chrome_version().split('.')[0]
    path = os.path.join(os.getcwd(),chrome_ver)
    path = os.path.join(path,'chromedriver.exe')
    print(path)
    URL = 'https://www.google.co.kr/'
    driver = webdriver.Chrome(str(path))
    driver.get(url=URL)

먼저 함수 설명을 하면 여기서 chrome_ver은 최신 크롬드라이버가 들어있는 폴더명을 뜻한다. 자세한것은 아래 링크를 통해 확인하자. "크롬드라이버 자동 업데이트 함수 작성">>

https://trading-for-chicken.tistory.com/19

 

06. selenium에 필요한 chrome_driver 자동 업데이트 기능 만들기.chromedriver_autoinstaller

목표 : 현재 크롬 버전을 확인하여 최신 크롬드라이버로 업데이트 하고 구버전 크롬드라이버는 자동 삭제 selenium을 사용하기 위해서는 최신버전의 chrome_driver가 필수이다. 만약 크롬 드라이버가

trading-for-chicken.tistory.com

그리고 os.path.join을 통해 크롬드라이버 경로를 path에 지정해준다. 그리고 selenium을 통해서 구글을 열어준다.

분명 구글창 open까지는 문제 없는데 바로 꺼지게 된다. 이유는 크롬드라이버를 함수에서 실행할 경우 함수가 종료 될 때 셀레니움도 함께 종료되기 때문이다. 즉, 셀레니움을 통한 크롬제어창이 꺼지지 않게 하기 위해서는 단순히 함수가 종료되지 않게 하면된다. 이때 while문을 이용한다.

from selenium import webdriver
import os
import chromedriver_autoinstaller as AutoChrome
import shutil

def selenium_test():
    chrome_ver = AutoChrome.get_chrome_version().split('.')[0]
    path = os.path.join(os.getcwd(),chrome_ver)
    path = os.path.join(path,'chromedriver.exe')
    print(path)
    URL = 'https://www.google.co.kr/'
    driver = webdriver.Chrome(str(path))
    driver.get(url=URL)
    
    while(True):
    	pass

여기처럼 while(True):pass 를 추가시켜줌으로써 while문을 지속 수행해 함수가 종료되지 않게하여 selenium제어창을 유지 할 수 있다.

 

반응형

+ 최근 글