본문 바로가기
Python/Study

Python 웹 자동화: Selenium 사용방법 및 옵션 완벽 가이드

by Maccrey Coding 2024. 10. 5.
728x90
반응형

 

Python에서 Selenium은 웹 페이지를 자동으로 제어하고 테스트할 수 있는 매우 유용한 라이브러리입니다.

Selenium을 사용하면 브라우저를 자동으로 열고, 클릭하고, 텍스트를 입력하는 등의 작업을 프로그래밍으로 제어할 수 있습니다.

이번 포스팅에서는 Selenium의 기본 사용 방법과 자주 사용되는 옵션들을 상세히 다루어 보겠습니다.

초보자도 쉽게 따라할 수 있도록 단계별 예제와 설명을 함께 제공하겠습니다.

목차

  1. Selenium이란?
  2. Selenium 설치 및 기본 설정
  3. Selenium 기본 사용법
    • 브라우저 열기
    • 페이지 이동
    • 요소 찾기 및 상호작용
  4. Selenium 주요 옵션들
    • 브라우저 옵션
    • 요소 대기 (Wait)
    • 스크린샷 저장
  5. Selenium 사용 시 주의사항 및 팁

1. Selenium이란?

Selenium은 웹 브라우저를 자동으로 제어할 수 있는 도구입니다.

웹 애플리케이션을 테스트하거나 자동으로 특정 작업을 수행할 수 있도록 도와줍니다. Selenium은 다양한 프로그래밍 언어와 호환되며, Python에서도 쉽게 사용할 수 있습니다.

 

Selenium의 핵심 기능

  • 웹 페이지 자동화
  • 요소 클릭, 텍스트 입력 등 상호작용
  • 다양한 브라우저 지원 (Chrome, Firefox, Safari 등)

2. Selenium 설치 및 기본 설정

Selenium을 사용하기 위해서는 먼저 Selenium WebDriver와 브라우저 드라이버(예: ChromeDriver)를 설치해야 합니다.

1. Selenium 설치

Python에서 Selenium을 설치하려면, pip를 사용하여 설치할 수 있습니다.

pip install selenium

2. ChromeDriver 설치

Selenium이 브라우저를 제어하려면 해당 브라우저의 드라이버가 필요합니다. ChromeDriver는 Chrome 브라우저를 제어하는 데 사용됩니다.

ChromeDriver 설치 방법

  1. ChromeDriver 공식 사이트에서 현재 사용하는 Chrome 버전에 맞는 ChromeDriver를 다운로드합니다.
  2. 다운로드한 파일을 시스템 경로에 추가합니다.

3. Selenium 기본 사용법

1. 브라우저 열기

Selenium을 사용하여 브라우저를 여는 방법은 매우 간단합니다. 먼저 Chrome 브라우저를 열어봅시다.

from selenium import webdriver

# ChromeDriver 경로 지정
driver = webdriver.Chrome('/path/to/chromedriver')

# 브라우저 열기
driver.get('https://www.google.com')

# 브라우저 닫기
driver.quit()

코드 설명

  • webdriver.Chrome()을 사용하여 Chrome 브라우저를 엽니다.
  • driver.get() 메서드로 웹 페이지 URL을 입력하여 해당 페이지로 이동합니다.
  • 작업이 끝나면 driver.quit()으로 브라우저를 닫습니다.

2. 페이지 이동

Selenium으로 웹 페이지를 탐색할 수 있습니다.

driver.get('https://www.google.com')  # Google로 이동
driver.get('https://www.github.com')  # GitHub로 이동

# 뒤로 가기, 앞으로 가기
driver.back()  # 이전 페이지로 이동
driver.forward()  # 다음 페이지로 이동

3. 요소 찾기 및 상호작용

웹 페이지의 특정 요소를 찾고, 해당 요소와 상호작용하는 것이 Selenium의 기본 기능입니다.

1. 요소 찾기

Selenium에서는 다양한 방법으로 요소를 찾을 수 있습니다:

  • find_element_by_id()
  • find_element_by_name()
  • find_element_by_class_name()
  • find_element_by_tag_name()
  • find_element_by_css_selector()
  • find_element_by_xpath()

예를 들어, 구글 검색창에 텍스트를 입력하는 예시입니다.

# 구글로 이동
driver.get('https://www.google.com')

# 검색창 요소 찾기 (name 속성이 'q'인 입력창)
search_box = driver.find_element_by_name('q')

# 텍스트 입력
search_box.send_keys('Selenium Python')

# Enter 키 입력 (검색 실행)
search_box.submit()

2. 요소와 상호작용

  • send_keys(): 입력창에 텍스트를 입력합니다.
  • click(): 버튼이나 링크를 클릭합니다.
  • submit(): 폼을 제출합니다.

4. Selenium 주요 옵션들

1. 브라우저 옵션

Selenium에서 브라우저 옵션을 설정하면, 브라우저의 동작을 세밀하게 제어할 수 있습니다.

1. 창 크기 조절

driver.set_window_size(1024, 768)  # 창 크기를 1024x768로 설정

 

2. 브라우저를 백그라운드에서 실행 (Headless Mode)

브라우저가 백그라운드에서 실행되도록 설정할 수 있습니다. 이는 GUI가 필요 없는 자동화 작업에 매우 유용합니다.

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.google.com')

2. 요소 대기 (Wait)

웹 페이지의 요소가 로드되기 전에 상호작용을 시도하면 오류가 발생할 수 있습니다. 이때 명시적 대기(Explicit Wait) 또는 암시적 대기(Implicit Wait)를 사용하여 해결할 수 있습니다.

1. 암시적 대기

암시적 대기는 요소가 로드될 때까지 일정 시간 기다리는 방법입니다.

driver.implicitly_wait(10)  # 최대 10초까지 대기

2. 명시적 대기

명시적 대기는 특정 조건이 만족될 때까지 기다리는 방법입니다.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 최대 10초간 대기, 구글 검색창이 나타날 때까지
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, 'q'))
)
search_box.send_keys('Selenium Python')

3. 스크린샷 저장

Selenium은 현재 브라우저의 상태를 스크린샷으로 저장할 수 있습니다. 디버깅에 매우 유용합니다.

driver.save_screenshot('screenshot.png')  # 스크린샷 저장

5. Selenium 사용 시 주의사항 및 팁

  • 브라우저 드라이버 버전: 사용하는 ChromeDriver나 FirefoxDriver의 버전이 브라우저 버전과 일치해야 합니다.
  • 사이트의 구조 변화: 웹사이트가 자주 변경된다면, Selenium 스크립트가 실패할 가능성이 있습니다. 이때는 코드를 자주 업데이트해야 합니다.
  • Implicit Wait와 Explicit Wait: 적절한 대기 시간을 설정하지 않으면, 요소를 찾지 못하거나 에러가 발생할 수 있습니다.

구독!! 공감과 댓글,

광고 클릭은 저에게 큰 힘이 됩니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

728x90
반응형