LearnRun

Ubuntu 환경에서의 Selenium(chrome) 동작 문제 본문

메모장/Ubuntu & Linux

Ubuntu 환경에서의 Selenium(chrome) 동작 문제

PROMPT_ 2023. 11. 25. 03:16

 

 

Ubuntu 컨테이너 내에서 크롬드라이버를 신규로 세팅하는 과정에서,

버전 충돌인지, 또는 환경 문제인지 이전에 보지 못했던 에러가 발생하여 글을 작성했습니다.

 

 

에러 1 : DevToolsActivePort file doesn't exist 

Error 내용

  (session not created: DevToolsActivePort file doesn't exist)                                                            
  (The process started from chrome location /root/.cache/selenium/chrome/linux64/119.0.6045.105/chrome is no longer runnin
g, so ChromeDriver is assuming that Chrome has crashed.)

에러 내용 자체는 단순했지만, 경우의 수가 많을 것 같아서 마음이 복잡했습니다.

 

조치사항

조치 1 : google chrome 재설치

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb

 

 

일반적으로, 재설치 진행이 가장 중요하다고 생각하여 본 과정 진행했습니다.

빠르게 진행할 수 있고, 그럼에도 중요도도 높아서 최우선으로 꼽았습니다.

그러나 개선되지는 않았습니다.

 

조치 2 : 권한 변경

chmod +x /크롬/드라이버/경로

 

드라이버 내 tmp 등의 임시 파일 쓰기 권한에 걸렸나 짐작했습니다.

그러나 당초 sudo로 대부분을 진행했고, root로 동작하여 이 경우의 수는 없다고 생각했습니다.

역시 여전히 동작하지 않았습니다.

(혹시 모르니까 했습니다.)

 

조치 3 : 셀레니움 웹 드라이버 실행옵션 변경

# (optional) 창을 표시하지 않고 실행하려면 추가
chrome_options.add_argument("--headless")

# (optional) GPU 사용 안 함
chrome_options.add_argument("--disable-gpu")

# (optional) 노-샌드박스 모드로 실행
chrome_options.add_argument(f"--no-sandbox")

# (optional) 소프트웨어 래스터라이저 사용 안 함
chrome_options.add_argument(f"--disable-software-rasterizer")

# (optional) dev/shm 사용 안 함
chrome_options.add_argument(f"--disable-dev-shm-usage")

# (optional) 확장 프로그램 비활성화
chrome_options.add_argument(f"--disable-extensions")

window 환경에서 사용했던 코드로, ubuntu와 다소 달라질 소지가 있습니다.

그래서 컨테이너 환경에서의 gpu 문제 등으로 에러가 발생했다 생각했습니다.

여기서 백프로라고 생각했지만, 결과는 여전히 동작하지 않았습니다.

 

조치 4 : 크롬 드라이버 매니저 도입

pip install chromedriver-autoinstaller
pip install --upgrade webdriver_manager

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService

service = ChromeService(executable_path=ChromeDriverManager().install())

여전히 동작하지 않았으나, 에러 메시지가 바뀌었습니다.

 

 

에러 2 : determined_browser_version 형식

Error 내용

determined_browser_version = ".".join(determined_browser_version.split(".")[:3]) AttributeError: 'NoneType' object has no attribute 'split'

다 해결되었다 생각했는데 새로운 에러가 또 발생해서 눈 앞이 깜깜했습니다.

그래도 아예 바뀌지 않는 것보다는 좋은 소식입니다..

 

조치사항

조치 : 의존성 문제 해결 및 크롬 stable 버전 재설치

apt --fix-broken install

결국 최초 조치사항에 일부 보태 고쳤습니다.

여기서 최종 해결되어, 파이썬 내에서 크롬 셀레니움 코드가 정상적으로 동작하였습니다.

 

 

마치며

왜 틀렸는지 몰라서 많이 고생했습니다.

오류가 명백하게 한 곳을 가리키는 것이 아니기에, 여러 방면으로 고생을 하지 않았나 생각합니다.

지금 이 시간에 글을 쓰고앉은 이유이기도 합니다. ㅠㅠ

 

재설치를 할 때는, 의존성 문제 해결을 함께 진행하는 사고 흐름을 가지면 좀 더 좋겠습니다.

‌ ‌ ‌
Comments