Ⅰ. Selenium 이란?
웹 브라우저의 모든 동작을 코드로 자동화하는 오픈소스 프레임워크입니다. 2004년 웹 테스팅 도구로 출발하여, 현재는 데이터 수집(Crawling), 업무 자동화(RPA), 대규모 병렬 테스트까지 IT 전 영역에서 사용되는 표준 기술입니다.
2026년 기준 Selenium 5에서는 AI 기반 셀프 힐링(Self-Healing) 기능이 도입되었습니다. 웹 페이지 구조가 바뀌어도 AI가 자동으로 요소를 재탐지하여 스크립트 유지보수 부담이 크게 줄었습니다.
■ Selenium 진화
단순 테스트 도구에서 범용 자동화 플랫폼으로 진화
| 구분 | 주요 특징 | 핵심 키워드 |
| 2004 | 초기 웹 테스트 자동화의 시작 | 웹 테스팅 도구 |
| Selenium 4 | 브라우저 자동화의 표준 확립 | W3C 표준화 |
| Selenium 5 | AI를 활용한 안정성 및 지능화 | AI 셀프 힐링 |
| 현재 | 테스트를 넘어선 영역 확장 | 테스트, 크롤링, RPA |
Ⅱ. Selenium 주요 특징
ⅰ. 다양한 언어 지원
: Python, Java, C#, JavaScript, Ruby 등 팀의 기술 스택에 맞는 언어로 작성할 수 있습니다.
ⅱ. 멀티 브라우저
: Chrome, Firefox, Safari, Edge 등 모든 주요 브라우저를 단일 코드로 제어합니다.
ⅲ. W3C 표준
: W3C 공식 표준 프로토콜을 채택하여 브라우저 버전 간 호환성이 매우 안정적입니다.
ⅳ. AI 셀프 힐링
: HTML 구조가 변경되어도 AI가 유사 요소를 자동 탐지하여 스크립트 깨짐을 방지합니다
ⅴ. Selenium Manager
: 별도 드라이버 다운로드 없이 실행 환경에 맞는 브라우저 드라이버를 자동으로 관리합니다.
Ⅲ. Selenium 동작 방식
클라이언트-서버 구조로 동작합니다. 사용자 코드가 HTTP 명령으로 변환되고, 브라우저 드라이버를 거쳐 실제 브라우저에서 실행됩니다. 결과는 역순으로 반환됩니다.
| 단계 | 구분 | 주요 역할 및 상세 동작 |
| 1 | 코드 작성 (Client) | 사용자가 Python 등으로 find_element(), click() 같은 명령을 작성합니다. Selenium 라이브러리가 이를 WebDriver 프로토콜 명령으로 변환합니다. |
| 2 | WebDriver 프로토콜 전송 | 변환된 명령이 HTTP RESTful API 형태로 로컬호스트의 브라우저 드라이버 서버로 전송됩니다. W3C 표준 JSON 포맷을 사용합니다. |
| 3 | Browser Driver 중계 | ChromeDriver, GeckoDriver 등 각 브라우저 전용 드라이버가 HTTP 명령을 수신하여 브라우저가 이해할 수 있는 내부 프로토콜로 변환합니다. |
| 4 | 브라우저 실행 & 결과 반환 | 실제 브라우저에서 클릭, 입력, 스크롤 등의 동작이 수행됩니다. 결과(HTML, 스크린샷, 텍스트 등)는 역순으로 코드에 반환됩니다. |
Headless 모드를 사용하면 브라우저 창을 화면에 띄우지 않고 백그라운드에서 실행할 수 있습니다. 서버 환경이나 대규모 병렬 크롤링에 필수입니다.
Ⅳ. Selenium 아키텍처 구성 및 흐름도
ⅰ. Selenium 4계층 아키텍처

ⅱ. 구성요소
| 구성 요소 | 역할 | 예시 |
| Client Library | 사용자가 코드로 명령을 작성하는 언어별 인터페이스 | selenium, selenium-webdriver |
| W3C Protocol | 클라이언트와 드라이버 간 HTTP 통신 표준 규약 | JSON Wire |
| Browser Driver | 프로토콜 명령을 브라우저 내부 신허로 변환하는 중계자 | ChromeDriver, GeckoDriver |
| Real Browser | 실제 자동화가 실행되는 최종 대상 | Chrome, Firefox |
Ⅴ. Selenium 설치 방법
Selenium 4.6 이상부터는 Selenium Manager가 내장되어 ChromeDriver를 별도로 다운로드할 필요가 없습니다. 설치가 매우 간단해졌습니다.
| 전제 조건: Python 3.8+, Chrome 또는 Firefox가 PC에 설치되어 있어야 합니다. 드라이버는 자동으로 관리됩니다. |
ⅰ. 라이브러리 설치
| # Selenium 설치 (Selenium Manager 포함) pip install selenium # 버전 확인 python -c "import selenium; print(selenium.__version__)" |
ⅱ. 브라우저 드라이버 설정
| webdriver.Chrome()을 호출하면 Selenium Manager가 현재 설치된 Chrome 버전에 맞는 ChromeDriver를 자동 다운로드 & 실행합니다. 더 이상 "드라이버 버전 불일치" 오류로 고생할 필요가 없습니다. ※ Chrome 또는 Firefox가 PC에 설치되어 있어야 합니다. 브라우저 자체는 자동 설치되지 않습니다. |
Ⅵ. Selenium 사용 방법
브라우저 실행 → URL 접속 → 요소 탐색 → 상호 작용 → 종료의 흐름을 익히면 대부분의 자동화를 구현할 수 있습니다.
ⅰ. 기본 패턴 - 구글 검색 자동화
| from selenium import webdriver from seleniuhttp://m.webdriver.common.by import By from seleniuhttp://m.webdriver.common.keys import Keys from seleniuhttp://m.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 1. 브라우저 실행 (드라이버 자동 매칭) driver = webdriver.Chrome() driver.implicitly_wait(5) # 요소 탐색 최대 대기 5초 try: # 2. URL 접속 driver.get("https://www.google.com") # 3. 검색창 찾기 & 입력 search_box = driver.find_element(By.NAME, "q") search_box.send_keys("Selenium 5 신기능") search_box.send_keys(Keys.RETURN) # 4. 첫 번째 결과 로딩 대기 후 텍스트 출력 first = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "h3")) ) print("첫 번째 결과:", first.text) finally: driver.quit() # 반드시 종료하여 리소스 반납 |
ⅱ. Headless 모드 - 서버·배치 환경
| from seleniuhttp://m.webdriver.chrome.options import Options options = Options() options.add_argument("--headless=new") # 창 없이 실행 options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=options) driver.get("https://example.com") print(driver.title) driver.quit() |
Ⅶ. Selenium 자주 쓰는 명령어
| 메서드 | 설명 |
| driver.get(url) | 지정한 URL로 이동합니다. 페이지가 완전히 로드될 때까지 대기합니다. |
| find_element(By.X, val) | 조건에 맞는 HTML 요소 1개를 반환합니다. By.ID, By.CSS_SELECTOR, By.XPATH 등을 사용합니다. |
| find_elements(By.X, val) | 조건에 맞는 모든 요소를 리스트로 반환합니다. 반복 처리에 사용합니다. |
| element.click() | 해당 요소를 클릭합니다. 버튼, 링크, 체크박스 등에 사용합니다. |
| element.send_keys(text) | 입력 필드에 텍스트를 타이핑합니다. Keys.RETURN 같은 특수 키도 전달할 수 있습니다. |
| execute_script(js) | JavaScript를 직접 실행합니다. 스크롤 이동, 숨겨진 요소 조작에 활용합니다. |
| WebDriverWait().until() | 특정 조건이 충족될 때까지 명시적으로 대기합니다. implicitly_wait보다 정밀하여 실전에서 권장합니다. |
| driver.quit() | 브라우저와 드라이버 프로세스를 모두 종료합니다. 메모리 누수 방지를 위해 반드시 호출합니다. |
Ⅷ. Selenium 활용 방안
| 활용 분야 | 구분 | 상세 내용 및 효과 | 주요 타겟 |
| QA 테스트 | UI 자동화 테스트 | 배포 후 UI/UX의 정상 작동 여부를 정기적으로 검증합니다. CI/CD 파이프라인에 통합하여 회귀 테스트(Regression Test) 효율을 극대화합니다 | 개발팀, QA 엔지니어 |
| 데이터 수집 | 동적 웹 크롤링 | JavaScript로 렌더링되는 SPA(React, Vue 등) 사이트의 데이터를 수집합니다. 정적 분석 도구로 접근 불가능한 동적 요소를 추출할 때 사용합니다. | 데이터 분석가, 마케터 |
| RPA | 업무 프로세스 자동화 | 반복적인 행정 업무(보고서 다운로드, 민원 접수, 데이터 입력 등)를 자동화합니다. 단순 반복 업무를 줄여 업무 생산성을 높이는 데 기여합니다. | 일반 사무직, 운영팀 |
| 모니터링 | 서비스 가용성 감시 | 로그인, 결제 등 핵심 사용자 여정(User Journey)을 24시간 감시합니다. 기능 장애나 로딩 속도 저하를 실시간으로 탐지하여 사고를 방지합니다. | 인프라/SRE 팀, 서비스 운영자 |
'어플리케이션' 카테고리의 다른 글
| 초고속 분산 처리 엔진 Apache Spark에 대해 알아보겠습니다. (0) | 2026.04.28 |
|---|---|
| Apache Iceberg 성능 최적화와 데이터 관리 전략 (0) | 2026.04.27 |
| 실시간 레이크하우스의 핵심 Apache Paimon 에 대해 알아보겠습니다. (0) | 2026.04.24 |
| 브루트 포스(Brute Force, 무차별 대입) 공격 완전 정복 (0) | 2026.03.05 |
| WinDbg (Windows Debugger) 에 대해 알아보겠습니다. (0) | 2026.02.20 |