디지털

셀레니움(Selenium)

셀레니움(Selenium)은 웹 애플리케이션을 자동화하는 오픈 소스 도구로, 주로 웹 스크래핑, 자동화 테스트, 반복적인 웹 작업을 자동화하는 데 사용됩니다.

Selenium 소개 (https://selenium.dev)

  • 웹 테스트 자동화 프레임워크
  • Java, C#, Ruby, Python 등 다양한 언어를 지원
  • Apache License (자유롭게 사용)
  • 웹 테스트 외에 크롤링, 브라우저 자동화 등 다양한 목적으로 사용

셀레니움은 자체가 웹브라우저이자 드라이버 역할을 수행합니다. 크롬인것처럼 쓰려면 크롬 드라이버로 세팅해서 쓰면 됩니다. “특정 페이지로 가서 어떤 컴포넌트를 클릭해라”라고 요청하면 그런 작업들을 수행해주는 툴이라고 생각하면 됩니다. 그러다 보니 동적으로 URL이 생성되는 페이지든 어느 페이지든 왠만하면 거의 다 (Active X를 쓰는 웹같은 경우..?) 크롤링 해올 수 있습니다.

🔹 셀레니움의 주요 구성 요소

  1. Selenium WebDriver
    • 브라우저를 직접 제어하는 API
    • Chrome, Firefox, Edge 등 다양한 브라우저를 지원
    • 다양한 언어(Python, Java, C#, JavaScript 등)에서 사용 가능
  2. Selenium IDE
    • 브라우저에서 테스트를 녹화하고 재생할 수 있는 도구
    • 코딩 없이 간단한 테스트 자동화 가능
  3. Selenium Grid
    • 여러 브라우저와 환경에서 병렬 테스트를 실행할 수 있도록 지원
    • 분산 환경에서 테스트 수행 가능

🔹 셀레니움 설치 및 기본 사용법 (Python 예제)

1️⃣ 설치

!pip install selenium

2️⃣ 웹드라이버 다운로드

브라우저에 맞는 WebDriver를 다운로드하고, 실행 파일의 경로를 설정해야 합니다. 아래 매니저를 한번에 설치하는 방법도 있습니다.

!pip install webdriver_manager

3️⃣ 기본 코드 예제 (Chrome)

from selenium import webdriver
from selenium.webdriver.common.by import By

# 웹드라이버 실행 (크롬)
driver = webdriver.Chrome()

# 웹페이지 열기
driver.get("https://www.google.com")

# 검색창 찾고 입력
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Selenium Python")
search_box.submit()

# 5초 대기 후 종료
driver.implicitly_wait(5)
driver.quit()

🔹 셀레니움 주요 기능

  1. 요소 찾기
    • find_element(By.ID, "id값")
    • find_element(By.CLASS_NAME, "class이름")
    • find_element(By.NAME, "name값")
    • find_element(By.XPATH, "//태그[@속성='값']")
  2. 입력 및 버튼 클릭python복사편집element.send_keys("텍스트 입력") element.click()
  3. 페이지 이동 및 스크롤python복사편집driver.get("https://www.example.com") driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
  4. 스크린샷 저장python복사편집driver.save_screenshot("screenshot.png")
  5. 팝업 창 제어python복사편집alert = driver.switch_to.alert alert.accept() # 확인 버튼 클릭

🔹 셀레니움 사용 시 주의할 점

  • 웹사이트의 로딩 시간 문제
    time.sleep() 또는 WebDriverWait()을 사용하여 적절한 대기 시간 설정 필요
  • 동적 로딩된 요소 처리
    WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.XPATH, "XPATH값"))) 활용
  • 사이트 차단 방지
    User-Agent 변경 또는 headless mode 사용

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

4일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

1주 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

3주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago