메뉴 닫기

파이썬 Selenium 4 BiDi와 CDP 연동으로 네트워크 제어와 성능 모니터링 완전 정복

파이썬 Selenium 4 BiDi와 CDP 연동으로 네트워크 제어와 성능 모니터링 완전 정복

🚀 최신 Selenium 4 기능으로 네트워크 요청 가로채기, 성능 분석, 권한 관리, 기기 모킹까지 활용하는 방법을 알려드립니다

웹 자동화 도구인 Selenium은 그동안 단순한 브라우저 제어에 머무르는 경우가 많았습니다.
하지만 Selenium 4부터는 크롬 개발자 프로토콜(CDP)과 BiDi(WebDriver Bi-Directional) API를 활용해 네트워크 요청 모니터링, 성능 데이터 수집, 브라우저 권한 관리, 기기 환경 모킹까지 가능해졌습니다.
이는 테스트 자동화를 넘어서 실제 서비스 수준의 검증과 최적화까지 손쉽게 할 수 있게 만들어 주죠.
개발자와 QA 엔지니어, 데이터 분석가 모두가 알아두면 큰 도움이 되는 기술입니다.

이번 글에서는 Selenium 4의 BiDi/CDP 연동 개념부터 네트워크 요청 가로채기, 성능 분석, 권한 관리, 기기 모킹 활용 방법까지 폭넓게 다뤄봅니다.
이 기능들을 제대로 이해하면 단순히 버튼을 누르고 페이지를 이동하는 수준을 넘어서, 사용자의 실제 환경과 유사한 테스트 환경을 구현하고 문제 상황을 빠르게 잡아낼 수 있습니다.
또한 최신 브라우저 자동화 트렌드와 맞물려 Selenium의 활용도를 크게 확장할 수 있는 기회가 될 것입니다.



🌐 Selenium 4 BiDi와 CDP란 무엇인가?

Selenium 4는 기존의 단방향 WebDriver 프로토콜에서 벗어나 BiDi(WebDriver Bi-Directional)라는 양방향 통신 방식을 새롭게 지원합니다.
이는 브라우저와 테스트 코드가 실시간으로 데이터를 주고받을 수 있게 하여, 더 정밀하고 유연한 자동화를 가능하게 합니다.
예를 들어 네트워크 요청을 가로채거나, 콘솔 로그를 바로 수신하는 것처럼 이전에는 어렵던 작업들이 자연스럽게 처리됩니다.

또한 CDP(Chrome DevTools Protocol)는 크롬 브라우저의 내부 기능을 제어할 수 있는 인터페이스로, 네트워크·성능·디버깅 등 다양한 영역에 활용됩니다.
Selenium 4는 CDP와 연동하여 네트워크 요청/응답 제어, 기기 환경 모킹, 성능 측정 같은 고급 기능을 활용할 수 있습니다.
즉, 단순히 버튼을 누르고 화면을 이동하는 수준의 자동화가 아니라, 실제 사용자 환경과 유사한 시뮬레이션 기반의 테스트를 구축할 수 있는 것이죠.

💡 BiDi와 CDP의 차이점

구분 BiDi CDP
프로토콜 W3C 표준화 진행 중 크롬 전용, 비표준
통신 방식 양방향 (실시간 이벤트 수신) 단방향 호출 중심
적용 범위 크로스 브라우저 지원 예정 크롬/엣지 중심

즉, BiDi는 앞으로의 표준화된 자동화 인터페이스를 지향하며, CDP는 당장 크롬 기반에서 강력한 제어 기능을 제공한다는 점에서 차이가 있습니다.
실무에서는 두 기술을 적절히 병행하여 활용하는 경우가 많습니다.

💡 TIP: 최신 Selenium에서는 `devtools` API를 통해 CDP 기능을 바로 사용할 수 있고, 점차 BiDi 방식으로 전환될 예정입니다.

📡 네트워크 요청 가로채기와 응답 제어

Selenium 4와 CDP를 활용하면 웹 애플리케이션의 네트워크 요청과 응답을 직접 가로채고 수정할 수 있습니다.
이는 API 요청을 모니터링하거나 테스트 시 특정 데이터를 강제로 주입할 때 특히 유용합니다.
예를 들어 서버가 일시적으로 다운되었을 때, CDP를 통해 응답을 모킹(mocking)하여 안정적인 테스트 환경을 유지할 수 있습니다.

또한 광고 요청을 차단하거나, 이미지/스크립트 같은 리소스를 무시하도록 설정해 페이지 로딩 속도를 개선할 수도 있습니다.
이를 통해 테스트가 외부 리소스나 네트워크 환경에 영향을 받지 않고 안정적으로 수행되며, 다양한 시나리오를 손쉽게 재현할 수 있습니다.

🔎 요청/응답 제어 활용 사례

  • 🛠️외부 API 응답을 Mock 데이터로 대체
  • 광고·추적 스크립트 차단
  • 🌍특정 도메인 요청을 지역 서버로 리다이렉트
  • 📑HTML/JSON 응답 내용을 실시간 수정
CODE BLOCK
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# CDP 세션 시작
driver = webdriver.Chrome()
driver.execute_cdp_cmd(
    "Network.enable", {}
)

# 요청 가로채기
driver.execute_cdp_cmd(
    "Network.setBlockedURLs", {"urls": ["*ads.com/*"]}
)

print("광고 요청이 차단되었습니다.")

위 예제는 광고 도메인 요청을 차단하는 단순한 코드입니다.
실제 업무에서는 여기에 더해 다양한 Mock 응답을 설정하거나, 테스트 중 발생하는 API 호출을 검증하는 방식으로 확장할 수 있습니다.

⚠️ 주의: 네트워크 요청 제어는 브라우저 버전과 Selenium 드라이버 호환성에 따라 제한될 수 있으므로, 테스트 환경을 일관되게 유지하는 것이 중요합니다.



성능 로그와 메트릭 분석

웹 애플리케이션 테스트에서 단순히 동작 여부만 확인하는 것은 부족합니다.
Selenium 4의 BiDi/CDP 연동을 사용하면 브라우저 성능 로그메트릭 데이터를 수집할 수 있어, 페이지 로딩 속도와 렌더링 최적화 상태까지 점검할 수 있습니다.
이를 통해 사용자 경험(UX)에 직접적인 영향을 미치는 성능 요소를 측정하고 개선 방향을 찾을 수 있습니다.

예를 들어 네트워크 요청 지연, 자바스크립트 실행 시간, 메모리 사용량, CPU 소모 같은 데이터는 서비스 안정성과 직결되며, 사전에 문제를 탐지하는 중요한 지표가 됩니다.
QA 엔지니어나 개발자가 이런 성능 로그를 자동화된 테스트에 포함하면 릴리즈 단계에서의 품질 보증이 훨씬 수월해집니다.

📊 수집 가능한 대표 메트릭

항목 설명
First Contentful Paint 최초로 화면에 콘텐츠가 표시되는 시간
DOMContentLoaded DOM이 완전히 로드된 시점
JS Execution Time 자바스크립트 실행에 소요된 시간
Memory Usage 페이지 실행 중 메모리 사용량
CODE BLOCK
from selenium import webdriver

driver = webdriver.Chrome()
driver.execute_cdp_cmd("Performance.enable", {})

# 메트릭 가져오기
metrics = driver.execute_cdp_cmd("Performance.getMetrics", {})
for item in metrics["metrics"]:
    print(item)

위 코드처럼 Performance.getMetrics API를 호출하면 다양한 성능 데이터가 반환됩니다.
이 데이터를 통해 병목 구간을 찾거나 리소스 최적화 여부를 판단할 수 있습니다.

💎 핵심 포인트:
성능 로그를 자동화된 테스트 시나리오에 포함하면 코드 변경 시 성능 저하 여부를 즉시 감지할 수 있어 안정적인 서비스 운영에 큰 도움이 됩니다.

🔐 브라우저 권한 관리와 사용자 시뮬레이션

Selenium 4 BiDi/CDP 연동을 활용하면 브라우저 권한을 직접 제어할 수 있습니다.
예를 들어 테스트 중 위치 정보 접근을 허용하거나 거부하는 상황을 쉽게 재현할 수 있으며, 카메라·마이크 접근 권한도 설정할 수 있습니다.
이를 통해 실제 사용자 환경을 가깝게 모의(simulation)하면서 안정적인 테스트를 수행할 수 있습니다.

특히 전자상거래, 금융 서비스, 지도 기반 서비스처럼 권한에 따라 결과가 달라지는 애플리케이션에서는 이러한 권한 제어가 필수적입니다.
단순히 버튼 클릭 자동화가 아니라, 사용자 행동을 포함한 브라우저 환경 전체를 제어할 수 있다는 점이 Selenium 4의 가장 큰 강점 중 하나라 할 수 있습니다.

🎯 권한 관리 예시

  • 📍위치 권한 허용/차단 테스트
  • 🎤마이크·카메라 접근 모의
  • 🔔웹 알림(Notification) 허용 여부 제어
  • 💳결제 API 접근 권한 시나리오
CODE BLOCK
from selenium import webdriver

driver = webdriver.Chrome()

# 위치 권한 거부 설정
params = {
    "origin": "https://example.com",
    "permission": "geolocation",
    "setting": "denied"
}
driver.execute_cdp_cmd("Browser.setPermission", params)

print("위치 권한이 거부된 상태에서 테스트 진행")

위 코드처럼 CDP의 Browser.setPermission API를 활용하면 특정 사이트에 대해 권한 허용/거부 동작을 쉽게 시뮬레이션할 수 있습니다.
이는 QA 단계에서 서비스가 권한 부여 여부에 따라 어떻게 반응하는지를 빠르게 점검할 수 있는 방법입니다.

💬 권한 제어 기능을 통해 실제 사용자 환경과 유사한 테스트를 재현할 수 있으며, 이는 서비스 안정성과 사용자 경험을 모두 보장하는 핵심 요소입니다.



📱 기기 환경 모킹과 테스트 활용

실제 사용자들은 다양한 기기와 네트워크 환경에서 웹을 이용합니다.
따라서 테스트 환경도 단순한 PC 브라우저뿐만 아니라 모바일, 태블릿, 저속 네트워크 환경까지 고려해야 합니다.
Selenium 4와 CDP를 활용하면 기기 환경 모킹(Device Emulation)을 통해 다양한 시뮬레이션을 구현할 수 있습니다.

특히 반응형 웹 디자인 검증이나 모바일 전용 UI 테스트, 네트워크 속도 제한 환경에서의 성능 점검은 필수적입니다.
기기 환경 모킹 기능을 사용하면 실제 물리적 기기가 없어도 가상 환경에서 이런 검증을 빠르고 효율적으로 수행할 수 있습니다.

📲 대표적인 모킹 시나리오

  • 📱모바일 해상도(예: iPhone 12) 시뮬레이션
  • 💻태블릿 전용 레이아웃 테스트
  • 🌐저속 네트워크(3G/2G) 환경 모킹
  • 🔋배터리 절약 모드 테스트
CODE BLOCK
from selenium import webdriver

driver = webdriver.Chrome()

# iPhone 12 환경 모킹
params = {
    "mobile": True,
    "width": 390,
    "height": 844,
    "deviceScaleFactor": 3
}
driver.execute_cdp_cmd("Emulation.setDeviceMetricsOverride", params)

print("iPhone 12 환경에서 테스트 실행")

위 코드는 iPhone 12 해상도와 스케일을 모킹하여 브라우저에서 모바일 전용 UI를 테스트하는 예시입니다.
이처럼 다양한 기기 환경을 설정해두면 서비스가 여러 플랫폼에서 어떻게 동작하는지 한 번에 확인할 수 있습니다.

💎 핵심 포인트:
기기 환경 모킹은 비용과 시간을 절감하면서도 크로스 플랫폼 품질을 보장하는 강력한 방법입니다.

자주 묻는 질문 (FAQ)

Selenium 4에서 BiDi와 CDP의 차이는 무엇인가요?
BiDi는 W3C 표준을 기반으로 한 양방향 통신 프로토콜로, 크로스 브라우저 지원을 목표로 합니다. 반면 CDP는 크롬 전용 기능으로 더 많은 내부 제어를 제공하지만 비표준이라는 차이가 있습니다.
네트워크 요청 가로채기는 어떤 상황에서 유용한가요?
API 응답을 Mock 데이터로 대체하거나 외부 광고·추적 요청을 차단할 때, 그리고 특정 도메인 요청을 다른 서버로 리다이렉트할 때 유용하게 활용됩니다.
성능 로그를 수집하면 어떤 데이터를 알 수 있나요?
페이지 로딩 속도, 자바스크립트 실행 시간, 메모리 사용량, CPU 소모량, First Contentful Paint와 같은 핵심 성능 지표를 확인할 수 있습니다.
브라우저 권한 제어는 어떤 테스트에 필요할까요?
위치 기반 서비스, 카메라·마이크 접근이 필요한 서비스, 푸시 알림이 동작하는 웹앱 등 권한 상태에 따라 결과가 달라지는 서비스 테스트에 꼭 필요합니다.
기기 환경 모킹은 실제 기기 테스트를 대체할 수 있나요?
100% 대체할 수는 없지만, 다양한 기기 해상도·네트워크 환경을 빠르게 시뮬레이션하여 효율적인 사전 검증을 가능하게 합니다. 실제 기기 테스트는 보완적으로 병행하는 것이 좋습니다.
CDP 기능은 크롬 외 브라우저에서도 사용할 수 있나요?
CDP는 기본적으로 크롬과 엣지 같은 Chromium 기반 브라우저에서만 지원됩니다. 그러나 BiDi 프로토콜은 파이어폭스 등 타 브라우저에서도 확산될 예정입니다.
Selenium 4에서 BiDi 이벤트는 어떻게 활용하나요?
콘솔 로그 수집, 네트워크 요청 모니터링, DOM 변경 이벤트 수신 등 다양한 실시간 브라우저 상태 정보를 받을 수 있습니다. 이는 자동화 시나리오에 큰 유연성을 제공합니다.
BiDi와 CDP를 동시에 사용하는 것이 가능한가요?
가능합니다. 현재 많은 프로젝트에서 CDP로 세밀한 기능을 사용하면서 BiDi로 표준화된 이벤트 처리를 병행하고 있으며, 점차 BiDi 중심으로 전환될 것으로 예상됩니다.

🧭 Selenium 4 BiDi/CDP 연동의 핵심 정리

Selenium 4의 가장 큰 혁신은 단순히 브라우저 제어를 넘어서 네트워크, 성능, 권한, 기기 환경까지 제어할 수 있게 된 점입니다.
BiDi는 차세대 표준으로 자리잡으며, CDP는 크롬 중심의 강력한 기능을 제공하고 있습니다.
이 둘을 적절히 활용하면 테스트 자동화는 물론, 실제 사용자 환경을 가깝게 재현하는 고급 시뮬레이션이 가능합니다.

네트워크 요청 가로채기를 통해 API 응답을 제어하거나, 성능 로그를 수집해 UX 저하 요인을 발견하고, 권한 시뮬레이션으로 다양한 시나리오를 점검하며, 기기 환경 모킹으로 크로스 플랫폼 품질을 확보할 수 있습니다.
이러한 기능들은 단순한 QA 단계를 넘어, 서비스 안정성과 최적화를 위한 핵심 도구로 발전하고 있습니다.

앞으로 Selenium을 활용하는 개발자와 QA 담당자는 BiDi와 CDP의 기능을 충분히 이해하고 적극적으로 활용하는 것이 필요합니다.
이를 통해 변화하는 웹 환경에 발맞춰 더 안정적이고 강력한 테스트 자동화를 구현할 수 있을 것입니다.


🏷️ 관련 태그 : Selenium4, SeleniumBiDi, ChromeDevTools, 웹자동화, 네트워크제어, 성능테스트, 브라우저권한, 기기모킹, 테스트자동화, QA도구