LearnRun
Ubuntu 환경에서의 Selenium(chrome) 동작 문제 본문
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
결국 최초 조치사항에 일부 보태 고쳤습니다.
여기서 최종 해결되어, 파이썬 내에서 크롬 셀레니움 코드가 정상적으로 동작하였습니다.
마치며
왜 틀렸는지 몰라서 많이 고생했습니다.
오류가 명백하게 한 곳을 가리키는 것이 아니기에, 여러 방면으로 고생을 하지 않았나 생각합니다.
지금 이 시간에 글을 쓰고앉은 이유이기도 합니다. ㅠㅠ
재설치를 할 때는, 의존성 문제 해결을 함께 진행하는 사고 흐름을 가지면 좀 더 좋겠습니다.