Python에서 Selenium은 웹 페이지를 자동으로 제어하고 테스트할 수 있는 매우 유용한 라이브러리입니다.
Selenium을 사용하면 브라우저를 자동으로 열고, 클릭하고, 텍스트를 입력하는 등의 작업을 프로그래밍으로 제어할 수 있습니다.
이번 포스팅에서는 Selenium의 기본 사용 방법과 자주 사용되는 옵션들을 상세히 다루어 보겠습니다.
초보자도 쉽게 따라할 수 있도록 단계별 예제와 설명을 함께 제공하겠습니다.
목차
- Selenium이란?
- Selenium 설치 및 기본 설정
- Selenium 기본 사용법
- 브라우저 열기
- 페이지 이동
- 요소 찾기 및 상호작용
- Selenium 주요 옵션들
- 브라우저 옵션
- 요소 대기 (Wait)
- 스크린샷 저장
- 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 설치 방법
- ChromeDriver 공식 사이트에서 현재 사용하는 Chrome 버전에 맞는 ChromeDriver를 다운로드합니다.
- 다운로드한 파일을 시스템 경로에 추가합니다.
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.
'Python > Study' 카테고리의 다른 글
파이썬으로 파일 다루기 쉽게 배우기: 초보자를 위한 파일 읽기, 쓰기, 삭제 가이드 (3) | 2024.10.26 |
---|---|
맥북(Mac OS)에서 아나콘다(Anaconda) 및 파이썬 설치하는 방법 (4) | 2024.10.13 |
Lama 3.2 API 만들기: 초보자를 위한 쉽게 따라할 수 있는 가이드 (4) | 2024.10.03 |
파이썬 타입 힌트 완벽 가이드: 변수와 함수의 타입을 명시하는 방법 (0) | 2024.09.17 |
파이썬 F-String: 초보자를 위한 간단하고 강력한 문자열 포맷팅 방법 (0) | 2024.09.17 |