파이썬 프로그래밍

파이썬 셀레니움 Selenium 파일 첨부 업로드

코니코니 2022. 11. 27. 19:00
반응형

파이썬 셀레니움 Selenium 파일 첨부 업로드


파이썬 셀레니움을 사용하여 파일을 첨부하는 방법에 대해서 설명합니다.

먼저 첨부하고자 하는 파일의 절대 경로를 체크합니다. 그리고 절대 경로를 통한 파일명을 가져와야 합니다.

a = r'E:\testimage\1.jpg'
b = r'E:\testimage\2.jpg'
c = r'E:\testimage\3.jpg'

이렇게 경로를 통한 파일명을 가져와서 셀레니움을 활용한 파일 업로드가 가능합니다.

네이버 메일창에서 파일 업로드를 한다고 했을 때 예시입니다. 파일 첨부 클래스는 보통 버튼 형태로 되어있습니다. 거기서 해당 클래스의 하위 요소들을 살펴보면 input으로 되어있는 요소를 찾을 수 있는데 이 요소를 타겟으로 업로드를 요청할 수 있습니다.

from selenium import webdriver
import chromedriver_autoinstaller

path = chromedriver_autoinstaller.install(True)
driver = webdriver.Chrome(path)
driver.implicitly_wait(5)

driver.get('https://www.naver.com/')
input('엔터 후 파일 첨부 실행!')

# 파일 첨부 클래스(여러개 한번에 업로드)
image_full_path = [r'E:\testimage\1.jpg', r'E:\testimage\2.jpg', r'E:\testimage\3.jpg']
image_path_txt = ' \n '.join(image_full_path)  # 이미지 리스트 join
elm_img_1 = driver.find_element_by_id('ATTACH_LOCAL_FILE_ELEMENT_ID')
elm_img_1.send_keys(image_path_txt)

여러 장의 이미지를 첨부할 때는 \n(엔터)로 나눠서 send_key 전송을 시도하면 됩니다. 코드에서는 처음 로그인 후 메일창 접속까지 수동으로 진행하고 엔터를 입력하면 아래 코드가 실행이 되어 이미지가 첨부되는 것이죠. 만약 하나의 파일만 업로드하려면 str 형태로 절대 경로/파일명. 확장자까지만 send_key로 전송해주면 됩니다.

코드 실행 시 정상적으로 파일이 첨부되는 것을 확인할 수 있습니다.

반응형