[파이썬] Selenium 파일 업로드 및 다운로드

파일 업로드와 다운로드는 웹 어플리케이션에서 중요한 기능 중 하나입니다. 이 기능을 사용자가 직접 테스트하기 위해서는 Selenium과 Python을 사용하여 파일 업로드와 다운로드를 자동화할 수 있습니다. 이번 블로그 포스트에서는 Selenium을 이용하여 파일을 업로드하고 다운로드하는 방법에 대해 알아보겠습니다.

파일 업로드

먼저 Selenium을 사용하여 파일을 업로드하는 방법을 알아보겠습니다. 파일 업로드는 send_keys 메소드를 사용하여 파일 경로를 입력하는 것으로 간단하게 구현할 수 있습니다. 다음은 예제 코드입니다.

from selenium import webdriver

# 웹 드라이버 설정
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get("https://example.com/upload")

# 파일 업로드 input 요소 찾기
upload_input = driver.find_element_by_css_selector("input[type='file']")

# 파일 경로 입력
upload_input.send_keys("C:/path/to/file.pdf")

# 파일 업로드 버튼 클릭
upload_button = driver.find_element_by_css_selector("input[type='submit']")
upload_button.click()

위 코드에서는 Chrome 웹 드라이버를 사용하였습니다. 먼저 webdriver.Chrome()을 통해 웹 드라이버를 설정하고, driver.get()으로 업로드 페이지를 엽니다. find_element_by_css_selector() 메소드로 파일 업로드 input 요소를 찾은 후, send_keys() 메소드로 파일 경로를 입력합니다. 마지막으로 업로드 버튼을 클릭하여 파일 업로드를 완료합니다.

파일 다운로드

Selenium을 사용하여 파일을 다운로드하는 경우, 다운로드 경로를 설정해야 합니다. Chrome 웹 드라이버를 사용하여 파일을 다운로드하는 예제 코드는 다음과 같습니다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 다운로드 경로 설정
chrome_options = Options()
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_experimental_option("prefs", {
    "download.default_directory": "C:/path/to/download/folder"
})

# 웹 드라이버 설정
driver = webdriver.Chrome(chrome_options=chrome_options)

# 파일 다운로드 링크 접속
driver.get("https://example.com/download")

# 파일 다운로드 링크 클릭
download_link = driver.find_element_by_css_selector("a.download-link")
download_link.click()

위 코드에서 webdriver.Chrome()을 설정할 때, chrome_options를 사용하여 다운로드 경로를 설정합니다. --disable-popup-blocking, --disable-extensions, --no-sandbox 등의 옵션을 추가적으로 사용하여 다운로드 시 발생할 수 있는 문제를 해결할 수도 있습니다. add_experimental_option() 메소드를 사용하여 prefs를 설정하여 기본 다운로드 경로를 지정할 수 있습니다.

마무리

이번 포스트에서는 Selenium과 Python을 사용하여 파일 업로드와 다운로드를 자동화하는 방법에 대해 알아보았습니다. 파일 업로드는 send_keys()를 사용하여 파일 경로를 입력하고, 파일 다운로드는 chrome_options를 설정하여 다운로드 경로를 지정할 수 있습니다. 이러한 방법을 활용하여 웹 어플리케이션의 파일 업로드 및 다운로드 기능을 테스트할 수 있습니다.

참고: Selenium documentation