본문 바로가기

Study Information Technology

Selenium으로 웹 브라우저 자동화 스크립트 만들기

728x90
반응형

Selenium으로 웹 브라우저 자동화 스크립트 만들기

Overview

Selenium은 웹 브라우저를 자동으로 조작할 수 있는 강력한 도구로, 웹 애플리케이션 테스트 및 반복적인 작업을 자동화하는 데 매우 유용합니다. 이 글에서는 Selenium을 사용하여 웹 사이트에 로그인하고 양식을 작성하는 스크립트를 만드는 방법을 자세히 설명하겠습니다.

Selenium을 사용하여 스크립트를 작성하려면 몇 가지 단계가 필요합니다. 필요한 도구와 환경 설정, 코드 예제, 자주 발생하는 오류 및 그 해결 방법 등을 하나하나 살펴보겠습니다.

1. 환경 설정

Selenium을 사용하기 위해서는 먼저 Python과 Selenium 라이브러리를 설치해야 합니다. 여기서는 Chrome 브라우저를 사용할 것이므로 ChromeDriver도 필요합니다.

1.1. Python 설치

Python이 설치되어 있지 않다면 Python 공식 웹사이트에서 다운로드 후 설치합니다.

1.2. Selenium 설치

터미널(혹은 커맨드 프롬프트)에서 다음 명령어를 입력하여 Selenium을 설치합니다:

pip install selenium

1.3. ChromeDriver 설치

ChromeDriver는 Chrome 브라우저와 상호작용하는 데 필요한 드라이버입니다. ChromeDriver 다운로드 페이지에서 현재 설치된 Chrome 버전과 일치하는 드라이버를 다운로드하여 적절한 경로에 위치시킵니다.

2. 스크립트 작성

이제 스크립트를 작성해보겠습니다. 다음 예제에서는 웹사이트에 로그인한 후, 특정 양식을 작성하는 과정을 보여줍니다.

2.1. 기본 코드 구조

다음은 Selenium을 사용하여 로그인하는 기본적인 코드 구조입니다:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 웹드라이버 초기화
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# 사이트 열기
driver.get('https://example.com/login')

# 로그인 폼 채우기
username_input = driver.find_element(By.NAME, 'username')
password_input = driver.find_element(By.NAME, 'password')

username_input.send_keys('your_username')
password_input.send_keys('your_password')

# 로그인 버튼 클릭
login_button = driver.find_element(By.XPATH, '//*[@id="login-button"]')
login_button.click()

# 잠시 대기
time.sleep(5)

# 양식 작성 페이지 열기
driver.get('https://example.com/form')

# 양식 필드 채우기
input_field_1 = driver.find_element(By.NAME, 'field1')
input_field_2 = driver.find_element(By.NAME, 'field2')

input_field_1.send_keys('입력값1')
input_field_2.send_keys('입력값2')

# 제출 버튼 클릭
submit_button = driver.find_element(By.XPATH, '//*[@id="submit-button"]')
submit_button.click()

# 브라우저 종료
driver.quit()

3. 코드 설명

  • 웹드라이버 초기화: webdriver.Chrome()을 사용하여 Chrome 브라우저의 인스턴스를 생성합니다. executable_path에는 ChromeDriver의 경로를 지정합니다.

  • 사이트 열기: driver.get(url) 메서드를 사용하여 특정 URL로 이동합니다.

  • 로그인 폼 채우기: find_element 메서드를 사용하여 요소를 찾고, send_keys 메서드로 값을 입력합니다. 여기서는 사용자 이름과 비밀번호를 입력합니다.

  • 로그인 버튼 클릭: 로그인 버튼을 찾아 클릭합니다. XPATH는 HTML 구조에 따라 다르므로, 실제 사이트의 버튼을 찾아 그에 맞는 XPATH를 입력해야 합니다.

  • 양식 작성 페이지 열기: 로그인 후 양식 작성 페이지로 이동합니다.

  • 양식 필드 채우기: 양식의 각 필드를 찾아 값을 입력합니다.

  • 제출 버튼 클릭: 양식이 모두 작성되면 제출 버튼을 클릭합니다.

  • 브라우저 종료: driver.quit() 메서드를 호출하여 브라우저를 종료합니다.

4. 오류 및 해결 방법

4.1. Element Not Found 오류

코드를 실행하는 중에 ElementNotVisibleException이나 NoSuchElementException 같은 오류가 발생할 수 있습니다. 이는 주로 웹 페이지가 로드되지 않았거나, 지정한 요소가 존재하지 않아서 발생합니다.

해결 방법:

  • 페이지가 완전히 로드될 때까지 기다리기 위해 time.sleep()을 사용하거나, WebDriverWait 클래스를 사용할 수 있습니다.
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 요소가 로드될 때까지 대기
username_input = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.NAME, 'username'))
)

4.2. Stale Element Reference 오류

페이지가 새로 로드되면 이전에 찾은 요소가 더 이상 유효하지 않을 수 있습니다.

해결 방법:

  • 다시 요소를 찾거나, try-except 구문을 사용하여 오류를 처리합니다.
try:
login_button = driver.find_element(By.XPATH, '//*[@id="login-button"]')
login_button.click()
except StaleElementReferenceException:
# 요소를 다시 찾기
login_button = driver.find_element(By.XPATH, '//*[@id="login-button"]')
login_button.click()

5. 결론

Selenium은 웹 브라우저의 자동화를 통해 많은 작업을 효율적으로 수행할 수 있게 해줍니다. 로그인, 양식 작성 등 다양한 웹 상의 작업을 자동화할 수 있는 능력은 많은 시간을 절약해줄 수 있습니다. 위 예제와 설명을 참고하여 여러분의 프로젝트에 맞게 응용해보세요.

참고문서

728x90
반응형