[Python] Selenium 설치 및 기본적인 웹 자동화 해보기

2023. 5. 5. 00:59IT/PYTHON

안녕하세요. 쿠루가이입니다. 

소프트웨어 테스팅 분야에서 웹 자동화를 할 때 항상 언급되는 것이 바로 셀레늄입니다. 셀레늄은 C#, JAVA, Python 등 여러 언어를 지원합니다. 그중에서도 파이썬(Python)으로 웹 자동화를 많아하는데요. 오늘은 셀레늄(Selenium)을 설치하고 기본적인 웹 자동화를 하는 방법에 대해 알아보겠습니다.

셀레늄은 웹 브라우저를 자동화할 수 있도록 해주는 라이브러리로, 웹 애플리케이션의 테스트 자동화 및 웹 스크래핑 등에 사용됩니다. 셀레늄을 사용하면 웹 브라우저를 띄우고 자동으로 웹 페이지를 제어하여 웹 애플리케이션을 테스트하거나 데이터를 수집할 수 있습니다.

셀레늄을 사용하기 위해서는 먼저 파이썬과 웹 드라이버(Web Driver)를 설치해야 합니다. 웹 드라이버는 셀레늄이 웹 브라우저를 제어하기 위해 사용하는 프로그램으로, 각 웹 브라우저마다 별도로 제공됩니다.

 

셀레늄(Selenium) 설치하기

1. 파이썬이 설치되어 있는 상태에서 pip 명령어를 이용하여 셀레늄 라이브러리를 설치합니다.

pip install selenium

 

2. 웹 자동화를 하기위해서는 브라우저 종류와 버전에 맞는 웹 드라이버를 설치해주어야합니다. 아래 링크를 눌러서 공식 홈페이지에서 다운로드 받습니다. 그리고 실행시키려는 py파일의 폴더에 이 드라이버를 복사합니다.

 

기본적인 웹 자동화 해보기

샘플 코드의 시나리오는 다음과 같습니다.

구글 검색 페이지로 이동 → 검색창에 'Selenium WebDriver'를 입력하고 검색 버튼 누름 → 검색 결과 첫번째 링크를 클릭 → 웹페이지의 타이틀을 출력

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

# Chrome WebDriver 인스턴스 생성
driver = webdriver.Edge()

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

# 검색창에 검색어 입력
search_box = driver.find_element('name', 'q')
search_box.send_keys('Selenium WebDriver')

# 검색 버튼 클릭
search_button = driver.find_element('name', 'btnK')
search_button.click()

# 검색 결과 페이지에서 첫 번째 링크 클릭
first_link = driver.find_element(By.CSS_SELECTOR, '#rso > div:nth-child(1) > div > div > div > div > div > div.Z26q7c.UK95Uc.jGGQ5e > div > a > h3')
first_link.click()

# 웹 페이지 타이틀 출력
print(driver.title)

# WebDriver 종료
driver.quit()

위 코드에서는 검색 버튼을 찾을 때 find_element 함수를 이용하여 검색했지만, 검색 버튼은 보통 id나 class 등의 속성을 이용하여 찾을 수도 있습니다. 또한, 검색 결과에서 첫 번째 링크를 찾을 때는 CSS Selector를 이용하여 찾았습니다. 이 코드는 웹 페이지의 HTML 구조에 따라 매번 변경될 수 있으므로, CSS Selector를 이용하여 원하는 요소를 찾을 때는 주의해야 합니다. (웹 브라우저의 검사도구를 잘 활용해야합니다!)

스크립트를 실행 해보면 MS Edge가 실행되면서 상단에 'Microsoft Edge가 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다.'라고 알려줍니다. 

자동화 동작인지 사용자 동작인지 이 문구로 구별할 수 있다.

구글 사이트에 접속하고 검색창에 자동으로 검색하려는 검색어가 자동으로 입력됩니다. 그리고 자동으로 검색 버튼이 눌러집니다.

검색어가 자동으로 입력됨

 

검색이 완료되고 첫번째 검색 페이지를 자동으로 선택하여 접속합니다. 이때 접속한 페이지 타이틀을 터미널에 표시해줍니다.

 

소스를 보면 간단한것 같지만...셀레늄이 버전업이 되고나서 'find_element_by_id(q)' 같은 메소드가 실행되지 않는 문제가 있었습니다. 구글링을 해보니 셀레늄이 신버전으로 업데이트 되면서 저런 메소드들은 모두 없애버리고 'find_element('id', 'q')' 이런 형태로 입력을 해주어야합니다. 저도 이 부분을 몰라서 한시간정도 시간 낭비를 했습니다.ㅠㅠ

 

맺음말

이상으로 Python에서 Selenium을 이용하여 Edge 브라우저에서 자동화하는 방법에 대해 간단하게 알아보았습니다. Selenium은 웹 자동화에 꼭 필요한 도구로, 웹 페이지의 동적인 요소를 다루는데 유용하게 사용됩니다. 더 많은 자동화 방법과 기능을 알고 싶다면, Selenium의 공식 문서를 참고하시면 도움이 될 것입니다.