본문 바로가기
파이썬코드공유

파이썬 셀레니움 파일 드래그 앤 드랍(selenium file drag and drop)

by 하이어시스템 2023. 8. 21.
반응형

하이어시스템 소개

 

하이어시스템 소개 feat.김프로

소개 안녕하세요, 저는 하이어시스템의 김프로입니다. 여러분들이 어려움을 겪고 계신 일상 업무를 저의 안정적이고 빠른 소프트웨어로 자동화하는 것, 그것이 저의 목표입니다. '하이어시스템

wise-office-worker.tistory.com

오늘은 셀레니움에서 파일 드래그 앤 드랍을 구현하는 방법에 대해서 알아보도록 하겠습니다.

 

물론 클릭 이벤트를 발생시키고 파일 팝업창에서 pyautogui 모듈을 통해서 파일명을 입력하는 방식으로도 구현할 수 있습니다. 그 외에도 다양한 방법이 있을겁니다. 하지만 이런 방식들은 셀레니움의 장점인 물리적 마우스와 키보드를 사용하지 않고 크롬드라이버 내부에서 이벤트가 발생한다는 장점을 포기해야 합니다. 자동화 프로그램이 수행되는 동안 간단한 작업이라도 할 수 있다면 사용자에게 큰 편의성를 제공할 수 있습니다.

 

생각보다 셀레니움으로 드래그 앤 드랍을 구현하는 건 아주 간단한 작업입니다. 예시로 설명드리겠습니다.

 

1. 유튜브 동영상, 쇼츠(shorts) 업로드 셀레니움 코드 작성 예제

아래 이미지는 유튜브에서 동영상을 업로드 하는 단계의 화면입니다.

 

이를 개발자 모드에서 열어 본 후 input tag를 찾는것이 핵심입니다.

파일선택 엘리먼트를 클릭

 

파일 선택 엘리먼트 또는 파일 드래그 앤 드랍존 인근에서 input tag를 찾습니다.  type이 file이고 name이 Filedata인 엘리먼트가 보이네요. 파일 드래그 앤 드랍에 이용되는 html로 예상됩니다.

발견된 input tag

 

그럼 셀레니움에서 다음과 같이 코드를 작성하면 됩니다.

drag_and_drop_zone = driver.find_element(By.XPATH, '//input[@name="Filedata"]')
drag_and_drop_zone.send_keys(file_path)

 

2. 네이버 블로그 코드 작성 예제

이번엔 네이버 블로그를 한번 살펴보도록 하겠습니다.

네이버블로그 개발자 모드

처음에는 input 태그를 찾을 수 없습니다. 하지만 사진 버튼을 클릭을 하고 나면 input tag가 생성됨을 확인할 수 있습니다.

동적으로 생성된 input tag

 

물론 이 경우엔는 파일 업로드를 위한 다이얼로그를  띄우고 다시 닫아야 하는 불편함은 있습니다. 하지만 파일 다이얼로그를 생성하지 않으면 input tag를 생성할 수 없기에 여기까지는 진행하고, 이후 "pyautogui 를 이용해서 파일명을 타이핑하고 엔터를 치는 스크립트는 자동화 프로그램의 안정성에 좋지 않으므로"  최대한 셀레니움으로 작성해주는것이 좋습니다.

drag_and_drop_zone = driver.find_element(By.XPATH, '//input[@id="hidden-file"]')
drag_and_drop_zone.send_keys(file_path)

 

반응형