Selenium WebDriver는 웹 애플리케이션을 자동화하기 위한 도구로, 웹 브라우저를 제어하여 웹 페이지를 조작할 수 있습니다. 이번에는 WebDriver에서 지원하는 기능과 각각의 기능을 구현하는 샘플 코드를 설명합니다.
페이지 탐색 기능
URL 이동
브라우저 상에서 URL을 입력하여 웹 사이트를 접속 할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome()
# URL 이동
driver.get("https://www.google.com")
뒤로 가기 / 앞으로 가기
페이지 접속 이력을 기반으로 뒤로/앞으로 가기를 수행할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome()
# 첫 번째 페이지 이동
driver.get("https://www.google.com")
# 두 번째 페이지 이동
driver.get("https://www.naver.com")
# 뒤로 가기
driver.back()
# 앞으로 가기
driver.forward()
요소 탐색 기능
요소 찾기
By.ID
웹 페이지에서 ID 속성을 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.ID, 'my-id')
By.NAME
웹 페이지에서 NAME 속성을 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.NAME, 'my-name')
By.CLASS_NAME
웹 페이지에서 CLASS 속성을 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.CLASS_NAME, 'my-class')
By.TAG_NAME
HTML 태그 이름을 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.TAG_NAME, 'div')
By.LINK_TEXT
링크 텍스트를 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.LINK_TEXT, 'my-link-text')
By.PARTIAL_LINK_TEXT
링크 텍스트의 부분 문자열을 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.PARTIAL_LINK_TEXT, 'my-link')
By.XPATH
XPath 표현식을 사용하여 요소를 찾을 수 있습니다.
element = driver.find_element(By.XPATH, '//div[@class="my-class"]')
요소 조작
검색어 입력
검색어를 입력할 수 있습니다.
element.send_keys("Python")
element.send_keys(Keys.RETURN)
요소 클릭
해당 요소의 클릭 이벤트를 발생 시킬 수 있습니다.
element.click()
페이지 조작 기능
스크롤 조작
웹상에서 스크롤을 올리고 내리는 기능을 자동으로 실행할 수 있습니다.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("https://www.naver.com")
# 스크롤 다운
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
# 스크롤 업
driver.execute_script("window.scrollTo(0, 0);")
time.sleep(3)
페이지 스크린샷
접속한 페이지의 스크린 샷을 찍고 파일로 저장할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
# 페이지 스크린샷
driver.save_screenshot("screenshot.png")
마치며
selenium을 이용하여 단순 웹의 데이터를 가져오는 것외에 다양한 액션 및 이벤트를 발생 시킬 수 있습니다.
이를 잘 이용하면 사람이 웹 상에서 액션하는 사항을 자동화로 구현이 가능하겠습니다.