메뉴 닫기

파이썬 Selenium 브라우저 콘솔 로그 수집 driver.get_log(browser) 완벽 가이드

파이썬 Selenium 브라우저 콘솔 로그 수집 driver.get_log(browser) 완벽 가이드

🚀 크롬 개발자 도구 로그를 자동 수집하는 실전 노하우를 소개합니다

웹 자동화를 하다 보면 단순히 버튼을 누르거나 데이터를 가져오는 수준을 넘어, 브라우저 내부에서 발생하는 콘솔 로그까지 수집해야 할 때가 많습니다.
특히 크롬 개발자 도구에서 확인할 수 있는 에러나 경고 메시지를 프로그램적으로 가져올 수 있다면, 디버깅 속도가 크게 향상되죠.
이 기능은 단순한 테스트 자동화를 넘어서, 실제 서비스 환경에서 안정성을 점검하는 데도 중요한 역할을 합니다.
오늘은 바로 이 콘솔 로그를 Selenium의 driver.get_log(‘browser’) 기능을 통해 수집하는 방법을 다룹니다.

많은 분들이 로그를 남기는 방법은 알고 있지만, 브라우저에서 발생하는 자바스크립트 에러를 어떻게 수집해야 할지 막막할 수 있습니다.
하지만 다행히도 Selenium과 크롬드라이버의 조합을 사용하면 이 과정을 간단히 자동화할 수 있습니다.
이번 글에서는 기본 개념부터 실제 활용법까지 단계별로 정리하여, 중급 수준의 파이썬 Selenium 사용자도 쉽게 이해하고 실무에 적용할 수 있도록 안내합니다.



🔗 Selenium에서 브라우저 로그 수집이 필요한 이유

웹 자동화 테스트를 진행할 때 대부분은 화면 상의 동작만 확인합니다.
예를 들어 버튼 클릭이나 입력 값 검증 같은 UI 이벤트에 초점을 맞추죠.
하지만 실제 서비스 품질을 보장하기 위해서는 화면에 보이지 않는 브라우저 콘솔 로그까지 확인하는 것이 중요합니다.

콘솔 로그에는 자바스크립트 오류, 네트워크 요청 실패, 디버깅 메시지 등 다양한 정보가 담겨 있습니다.
이런 로그를 자동으로 수집하면, 사용자가 직접 화면을 보지 않아도 내부에서 어떤 문제가 발생했는지 빠르게 파악할 수 있습니다.
특히 QA 환경에서는 테스트 결과와 함께 에러 로그를 남겨두면, 문제 재현과 수정 속도가 크게 단축됩니다.

📝 디버깅과 품질 관리에서의 역할

개발 단계에서 브라우저 로그를 수집하면 예상치 못한 자바스크립트 에러를 빠르게 발견할 수 있습니다.
예를 들어 특정 버튼 클릭 시 화면은 정상적으로 반응하지만, 내부적으로는 오류가 발생해 사용자 데이터가 저장되지 않는 경우가 있습니다.
이럴 때 driver.get_log(‘browser’)로 에러 메시지를 확보하면 문제의 원인을 쉽게 파악할 수 있습니다.

⚡ 사용자 경험 개선

에러 로그를 자동으로 모니터링하면 사용자 입장에서 발생할 수 있는 불편을 사전에 차단할 수 있습니다.
예를 들어 광고 차단 플러그인 때문에 발생하는 오류, 네트워크 지연 문제 등이 로그에 남을 수 있는데, 이를 기반으로 빠른 대응이 가능합니다.

  • 🛠️테스트 자동화 시 숨겨진 에러 로그 확인 가능
  • ⚙️서비스 품질 관리에 직접적인 도움
  • 🔍디버깅 속도 향상 및 문제 추적 용이

💡 TIP: 브라우저 로그 수집은 단순한 테스트 자동화 도구를 넘어서, 서비스 안정성을 검증하는 품질 보증 수단으로도 활용할 수 있습니다.

🛠️ driver.get_log(browser) 사용법

Selenium에서 브라우저 로그를 가져오기 위해서는 driver.get_log(‘browser’) 메서드를 사용합니다.
이 기능은 크롬드라이버가 제공하는 로깅 인터페이스를 통해 동작하며, 자바스크립트 오류나 경고, 콘솔 출력 메시지를 리스트 형태로 반환합니다.
리턴되는 값은 일반적인 문자열이 아니라 딕셔너리 구조의 로그 객체들이며, 각 객체에는 level, message, timestamp 등이 포함되어 있습니다.

📄 기본 사용 예제

CODE BLOCK
from selenium import webdriver

options = webdriver.ChromeOptions()
options.set_capability("goog:loggingPrefs", {"browser": "ALL"})

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

logs = driver.get_log("browser")
for entry in logs:
    print(entry)

위 코드에서 loggingPrefs 옵션을 통해 브라우저 로그를 활성화한 후, driver.get_log(“browser”)로 로그를 불러올 수 있습니다.
출력되는 로그는 JSON 형태의 딕셔너리 리스트이며, 각 로그에는 에러 레벨과 메시지, 발생 시점이 포함되어 디버깅에 유용하게 활용할 수 있습니다.

📌 주요 반환 필드

필드명 설명
level 로그의 심각도 (INFO, WARNING, ERROR 등)
message 실제 로그 내용 (자바스크립트 에러 메시지 등)
timestamp 로그 발생 시간 (밀리초 단위)

⚠️ 주의: 크롬드라이버 버전에 따라 로그 지원 여부가 달라질 수 있으며, 반드시 최신 버전을 사용하는 것이 안전합니다.



⚙️ 크롬드라이버 옵션과 로그 레벨 설정

브라우저 로그 수집을 제대로 활용하기 위해서는 단순히 driver.get_log(‘browser’)를 호출하는 것만으로는 부족합니다.
로그를 어떤 수준까지 기록할지, 그리고 어떤 형태로 저장할지를 미리 설정해야 원하는 정보를 정확하게 얻을 수 있습니다.
크롬드라이버는 loggingPrefs 옵션을 통해 로그 레벨을 지정할 수 있도록 지원합니다.

🔧 로그 레벨 종류

크롬 브라우저 로그는 크게 네 가지 수준으로 분류됩니다.
필요에 따라 적절한 레벨을 설정하면, 불필요한 정보는 거르고 중요한 메시지만 수집할 수 있습니다.

레벨 설명
ALL 모든 로그를 수집 (가장 상세)
INFO 일반적인 정보 메시지
WARNING 잠재적인 문제를 나타내는 경고
SEVERE 심각한 오류 메시지

⚙️ 옵션 설정 방법

CODE BLOCK
from selenium import webdriver

options = webdriver.ChromeOptions()
options.set_capability("goog:loggingPrefs", {"browser": "SEVERE"})

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

logs = driver.get_log("browser")
for log in logs:
    print(log["level"], log["message"])

위와 같이 loggingPrefs에 “SEVERE”를 지정하면 심각한 오류 메시지만 수집할 수 있습니다.
테스트 환경에서는 “ALL”을 활용해 전체 로그를 모니터링하고, 운영 환경에서는 “SEVERE”로 한정하는 방식이 효율적입니다.

💎 핵심 포인트:
로그 레벨을 상황에 맞게 설정하면 불필요한 데이터 노이즈를 줄이고, 디버깅에 필요한 핵심 정보만 손쉽게 추출할 수 있습니다.

🔌 실전 예제 코드와 응용 사례

단순히 브라우저 로그를 가져오는 것에서 끝내지 않고, 이를 다양한 방식으로 활용할 수 있습니다.
예를 들어 테스트 실행 후 자동으로 발생한 콘솔 에러를 리포트에 포함하거나, 특정 키워드를 가진 오류만 필터링해 Slack 같은 협업 도구로 알림을 보낼 수도 있습니다.
이러한 자동화는 QA뿐만 아니라 운영 모니터링 영역에서도 강력한 효과를 발휘합니다.

💻 에러 로그만 추출하기

CODE BLOCK
logs = driver.get_log("browser")
error_logs = [log for log in logs if log["level"] == "SEVERE"]

for err in error_logs:
    print(f"[ERROR] {err['message']}")

위 코드는 전체 로그 중 SEVERE 수준의 메시지만 필터링하는 방법을 보여줍니다.
이렇게 하면 불필요한 정보는 제거하고 실제 문제만 빠르게 확인할 수 있습니다.

📊 로그를 활용한 테스트 리포트 생성

브라우저 로그는 테스트 리포트의 중요한 일부가 될 수 있습니다.
예를 들어 Selenium으로 자동화 테스트를 진행하면서, 각 테스트 케이스 실행 후 발생한 콘솔 로그를 파일로 저장하면 디버깅이 훨씬 간편해집니다.

CODE BLOCK
import json

logs = driver.get_log("browser")
with open("browser_logs.json", "w", encoding="utf-8") as f:
    json.dump(logs, f, ensure_ascii=False, indent=4)

이렇게 저장된 로그 파일은 CI/CD 파이프라인에서 자동으로 수집해 빌드 리포트에 첨부할 수 있으며, 장기적으로는 에러 패턴을 분석하는 자료로도 쓸 수 있습니다.

💡 TIP: 로그를 단순 출력하는 데 그치지 말고, 파일 저장, 알림 시스템 연동 등으로 확장하면 테스트 자동화의 가치가 더욱 커집니다.



💡 로그 수집 시 주의할 점과 한계

브라우저 로그 수집은 강력한 기능이지만, 몇 가지 주의할 점이 있습니다.
모든 로그가 100% 캡처되는 것은 아니며, 크롬드라이버와 브라우저 버전 호환성 문제로 인해 특정 로그가 누락될 수 있습니다.
또한 로그 수집 자체가 브라우저 성능에 영향을 줄 수 있기 때문에, 무조건 전체 로그를 수집하기보다는 필요한 레벨만 선별하는 것이 좋습니다.

⚠️ 주의사항

  • 🔄크롬드라이버와 브라우저 버전을 항상 맞춰야 로그 누락을 줄일 수 있음
  • 📉모든 로그를 수집하면 성능 저하가 발생할 수 있음
  • 🛠️특정 로그는 개발자 도구 네트워크 탭에서만 확인 가능하여 get_log로는 수집 불가
  • 🔍로그는 일시적이므로 즉시 수집해야 누락 방지 가능

📌 한계와 대안

브라우저 콘솔 로그 수집은 디버깅에 유용하지만, 네트워크 요청 실패나 HTTP 응답 코드까지 완전하게 추적하려면 DevTools 프로토콜을 직접 사용하는 것이 필요할 수 있습니다.
Selenium 4부터는 Chrome DevTools Protocol(CDP)과 연동이 가능하므로, 더 정밀한 로깅과 성능 모니터링을 원한다면 이 방식을 함께 고려하는 것이 좋습니다.

💬 Selenium만으로 모든 문제를 해결할 수는 없습니다. 상황에 따라 CDP, Puppeteer 같은 다른 도구와의 조합이 필요합니다.

⚠️ 주의: 운영 환경에서 과도한 로그 수집은 시스템 자원 소모와 보안 문제를 유발할 수 있으므로, 반드시 목적에 맞게 범위를 제한하는 것이 바람직합니다.

자주 묻는 질문 (FAQ)

브라우저 로그와 서버 로그는 어떤 차이가 있나요?
브라우저 로그는 사용자의 웹 브라우저에서 실행되는 자바스크립트 오류나 경고를 기록하는 반면, 서버 로그는 서버 측에서 발생한 요청, 응답, 오류를 기록합니다. 두 로그를 함께 확인하면 문제를 더 빠르고 정확하게 추적할 수 있습니다.
driver.get_log(browser)로 네트워크 요청 오류도 확인할 수 있나요?
기본적으로는 자바스크립트 실행 관련 로그만 수집됩니다. 네트워크 요청 상태나 HTTP 코드 추적은 Chrome DevTools Protocol(CDP)과 같은 다른 기능을 병행해야 합니다.
로그 레벨을 ALL로 설정하면 무조건 다 수집되나요?
대부분의 콘솔 로그는 수집되지만, 브라우저 내부 정책이나 드라이버 버전 문제로 일부 로그가 누락될 수 있습니다. 따라서 항상 최신 크롬드라이버를 사용하는 것이 권장됩니다.
Selenium 4에서 CDP 연동은 어떻게 하나요?
Selenium 4는 CDP와의 연동을 기본적으로 지원합니다. driver.execute_cdp_cmd() 메서드를 사용하면 네트워크 요청, 성능 메트릭, 콘솔 이벤트 등을 보다 세밀하게 수집할 수 있습니다.
Firefox에서도 driver.get_log(browser)가 동작하나요?
현재 이 기능은 크롬드라이버에서만 안정적으로 지원됩니다. Firefox나 Edge에서도 일부 로그는 가져올 수 있지만, 지원 범위가 제한적입니다.
로그가 너무 많을 때 필터링은 어떻게 하나요?
파이썬에서 리스트 컴프리헨션을 사용해 특정 레벨만 추출하거나, 키워드 검색을 통해 필요한 메시지만 별도로 저장할 수 있습니다.
실제 운영 환경에서 로그 수집을 해도 되나요?
가능합니다. 다만 로그 수집은 성능에 영향을 줄 수 있으므로 운영 환경에서는 심각한 오류(SEVERE)만 수집하는 것이 좋습니다.
로그 데이터를 장기적으로 저장할 필요가 있나요?
테스트 자동화 단계에서는 필수는 아니지만, 운영 환경에서는 장기 저장이 도움이 됩니다. 로그를 통해 에러 패턴을 분석하고, 반복적으로 발생하는 문제를 근본적으로 해결할 수 있습니다.

📌 Selenium 브라우저 로그 수집 핵심 정리

이번 글에서는 파이썬 Selenium을 활용해 크롬 브라우저의 콘솔 로그를 자동으로 수집하는 방법을 살펴봤습니다.
특히 driver.get_log(‘browser’) 메서드를 중심으로, 기본적인 사용법부터 로그 레벨 설정, 응용 사례, 그리고 주의할 점까지 단계별로 정리했습니다.
브라우저 로그는 단순한 테스트 자동화가 아니라, 서비스 품질 관리와 사용자 경험 개선에도 중요한 역할을 합니다.

실무에서는 로그를 단순히 출력하는 데 그치지 않고, 파일 저장, 에러 알림 시스템 연동, CI/CD 파이프라인 통합 같은 확장 활용이 가능하다는 점도 기억해 두면 좋습니다.
다만 모든 로그가 완벽하게 수집되는 것은 아니므로, 크롬드라이버 버전 호환성 유지와 CDP(Chrome DevTools Protocol) 병행 사용을 고려하는 것이 바람직합니다.

결국 브라우저 로그 수집은 단순히 개발자나 QA를 위한 기능을 넘어, 운영 단계에서도 문제를 조기에 발견하고 대응할 수 있는 강력한 무기가 됩니다.
파이썬 Selenium을 이미 사용하고 있다면, 지금 바로 driver.get_log(‘browser’)를 프로젝트에 적용해 보는 것을 추천합니다.


🏷️ 관련 태그 : Selenium, 파이썬자동화, 브라우저로그, 크롬드라이버, 웹테스트, QA자동화, 로그수집, CDP, 웹디버깅, 테스트자동화