웹 서버에서 크롬드라이버를 작동시키고자 하는데,
Chrome not reachable / DevToolsActivePort file doesn't exist 이 에러 때문에 몇날 며칠을 고생했는지 모르겠다.
결론부터 말하자면 인터넷에 존재하는 어떤 모든 방법을 써도 다 안돼서 결국 서버를 종료 후 재시작했고 작동한다.
뭔가 서버상에 프로세스 충돌이 있었거나 했던 것 같다.
--
먼저 DevToolsActivePort file doesn't exist 에러는 아래 옵션값을 추가하면 사라진다.
options.add_argument('--disable-dev-shm-usage')
그리고 아래는 Chrome not reachable 을 해결하기 위한 시도들
1. options 수정 : 크롭 드라이버의 옵션값에 따라 오류가 발생하는 경우가 있다. 보통 no-sandbox 옵션값을 입력해주면 오류가 해결된다고 한다. 추가로 아래 옵션값 설명 참고.
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('headless') # headless모드 브라우저가 뜨지 않고 실행됩니다.
options.add_argument('--window-size= x, y') # 실행되는 브라우저 크기를 지정할 수 있습니다.
options.add_argument('--start-maximized') # 브라우저가 최대화된 상태로 실행됩니다.
options.add_argument('--start-fullscreen') # 브라우저가 풀스크린 모드(F11)로 실행됩니다.
options.add_argument('--blink-settings=imagesEnabled=false') # 브라우저에서 이미지 로딩을 하지 않습니다.
options.add_argument('--mute-audio') # 브라우저에 음소거 옵션을 적용합니다.
options.add_argument('incognito') # 시크릿 모드의 브라우저가 실행됩니다.
options.add_argument('--disable-dev-shm-usage') # 크롬이 메모리 대신에 /tmp 디렉토리를 사용하게 함. 성능 저하 가능성 있음.
options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 로그를 보여주지 않음
options.add_argument('--start-fullscreen') # 크롬을 전체화면으로 실행함
2. 크롬, 크롬 드라이버, 셀레니움 버전 확인 및 재설치
- 설치된 크롬 브라우저와 크롬 드라이버의 버전이 일치해야한다.
- 혹시 모르니 셀레니움 버전도 호환성이 좋은 버전으로 설치되어있는지 확인한다.
3. 경로 수정, r추가, 절대경로
- 크롬드라이버 경로 지정의 문제일 수도 있다고해서, 경로를 수정해보고 절대경로로도 입력해보았다.
- 현재는 아래와 같이 경로 표시
browser = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
4. headless 코드 수정
- 셀레니움 버전에 따라 headless 옵션을 표현하는 방식이 다른데, 혹시나 이 문제일까 싶어 셀레니움을 버전별로 설치 후 옵션을 바꿔가며 해봤다. 물론 해결 안됨
options.headless = True
options.add_argument('--headless')
- 위 두 가지 방식
+ 크롬드라이버를 자꾸 호출했으므로 프로세스 충돌 우려가 있어, 중간 중간 리눅스 서버에서 사용중인 프로세스를 확인해 정리해줬다.
5. 서버 재시작
- 정말 정말 최후의 수단으로 서버를 재시작했고, 크롬드라이버가 정상적으로 작동했다..
WebDriverException: unknown error: DevToolsActivePort file doesn't exist while trying to initiate Chrome Browser
I am trying to launch chrome with an URL, the browser launches and it does nothing after that. I am seeing the below error after 1 minute: Unable to open browser with url: 'https://www.google.co...
stackoverflow.com
'Python > Django' 카테고리의 다른 글
(corsheaders.E014) Origin 'https://domain.co.kr/' in CORS_ALLOWED_ORIGINS should not have path 에러 해결 (0) | 2024.01.29 |
---|---|
AWS EC2를 이용하여 Django + Uwsgi + Nginx 서버 세팅하기 (0) | 2023.10.21 |
[Django] 장고 manage.py 명령어 모음 (0) | 2022.01.21 |
[MAC] 맥에서 웹 서버 접속하기 (0) | 2021.11.27 |
[Java Script/Django] 버튼 클릭시 Confirm 알림창 띄우기 (0) | 2021.11.17 |