반응형
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
그리고 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제어창을 유지 할 수 있다.
반응형