다음을 사용하여 파일을 업로드 및 다운로드하는 방법 Selenium
⚡ 스마트 요약
파일 업로드 및 다운로드 Selenium WebDriver 워크플로는 입력 필드에는 네이티브 sendKeys() 함수를, 대화 상자에는 AutoIt 또는 Robot을, 그리고 CDP 명령에는 의존합니다. Selenium 4. 자동화 실행 중 안전한 다운로드 경로를 설정합니다.

WebDriver에서 파일을 업로드하는 방법은 간단합니다. 파일 선택 입력 필드에 sendKeys() 메서드를 사용하여 업로드할 파일의 경로를 입력하면 됩니다. 이 튜토리얼에서는 WebDriver를 사용하여 파일 업로드 및 다운로드를 처리하는 방법을 배우게 됩니다. Selenium 웹드라이버.
파일을 업로드하는 방법 Selenium
이 섹션에서는 다음을 사용합니다. https://demo.guru99.com/test/upload/ 우리의 테스트 응용 프로그램으로. 이 사이트를 사용하면 방문자가 가입하지 않고도 쉽게 파일을 업로드할 수 있습니다.

“C:\newhtml.html” 파일을 업로드하고 싶다고 가정해 보겠습니다. WebDriver 코드는 아래와 같아야 합니다.
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.Firefox운전사;
공개 수업 PG9 {
공공 정적 무효 기본(끈[] args) {
System.setProperty(“웹드라이버.게코.드라이버”,“C:\\geckodriver.exe”);
끈 baseUrl = “https://demo.guru99.com/test/upload/”;
웹드라이버 운전사 = Firefox운전사();
드라이버.get(baseUrl);
웹 요소 uploadElement = driver.findElement(By.id(“업로드파일_0”));
// 파일 경로를 파일 선택 입력 필드에 입력하세요
uploadElement.sendKeys(“C:\\newhtml.html”);
// "서비스 약관에 동의합니다" 확인란을 선택하세요
driver.findElement(By.id("자귀")).딸깍 하는 소리();
// "파일 업로드" 버튼을 클릭하세요
driver.findElement(By.name("보내다")).딸깍 하는 소리();
}
}
이 스크립트를 실행한 후에는 파일을 성공적으로 업로드할 수 있어야 하며 다음과 유사한 메시지가 표시되어야 합니다.
WebDriver에 파일을 업로드할 때 다음 두 가지 사항을 기억하세요.
- "찾아보기" 버튼을 클릭하는 동작을 시뮬레이션할 필요가 없습니다. WebDriver는 파일 경로를 파일 선택 텍스트 상자에 자동으로 입력합니다. 요소.
- 파일 경로를 설정할 때 Java IDE에서는 백슬래시에 적절한 이스케이프 문자를 사용하세요.
AutoIt을 사용하여 입력 필드가 없는 업로드 대화 상자 처리하기
페이지에서 기본 버튼 대신 사용자 지정 찾아보기 버튼을 사용하는 경우 해당 요소에서 sendKeys()가 작동하지 않는 경우, AutoIt 스크립트를 호출할 수 있습니다. Selenium 운영체제 대화 상자에 파일 경로를 입력하고 Enter 키를 누르십시오.
아래 스크립트를 다음과 같이 저장하십시오. upload.au3컴파일하여 업로드.exe그런 다음 다음에서 호출합니다. Java 찾아보기 버튼을 클릭한 후.
WinWaitActive("열다")
보내다(“C:\newhtml.html”)
보내다("{입력하다}")
이와 같은 서비스: Java찾아보기 클릭 후 헬퍼를 실행합니다.
런타임.getRuntime().exec(“C:\\AutoIt\\upload.exe”);
java.awt.Robot 클래스는 순수 로봇입니다.Java AutoIt을 사용할 수 없을 때 사용할 수 있는 대안이지만, AutoIt이 더 안정적입니다. Windows 제목으로 대화를 기다리기 때문입니다.
파일을 다운로드하는 방법 Selenium 웹드라이버
WebDriver에는 다운로드 대화 상자에 액세스할 수 있는 기능이 없습니다. 다운로드 링크나 버튼을 클릭했을 때 브라우저에서 표시되는 대화 상자입니다. 그러나 "wget"이라는 별도의 프로그램을 사용하면 이러한 대화 상자를 우회할 수 있습니다.
Wget이란 무엇입니까?
Wget은 다운로드를 자동화하는 데 사용되는 작고 사용하기 쉬운 명령줄 프로그램입니다.. 기본적으로 WebDriver 스크립트에서 Wget에 액세스하여 다운로드 프로세스를 수행합니다.
Wget 설정
단계 1) C 드라이브에 새 폴더를 만들고 이름을 "Wget"으로 지정합니다.
wget.exe 다운로드 여기에서 그리고 위 단계에서 생성한 Wget 폴더에 해당 파일을 넣어주세요.
단계 2) 실행 버튼을 눌러 실행을 시작하세요. Windows 키 + "R"을 누른 후 "cmd"를 입력하고 확인을 클릭하세요.
루트 디렉토리로 이동하려면 "cd /" 명령어를 입력하세요.
단계 3) 주어진 설정이 제대로 작동하는지 확인하려면 명령어를 입력하세요.
C 드라이브에 쓰는 데 문제가 있는 것 같습니다.
단계 4) wget 코드를 실행하기 전에 명령줄에서 wget 오류를 디버깅해야 합니다. Selenium WebDriver. 이러한 오류는 계속 발생합니다. Eclipse 오류 메시지가 그다지 도움이 되지 않을 것입니다. 먼저 명령줄을 사용하여 wget이 제대로 작동하는지 확인하는 것이 좋습니다. 명령줄에서 작동한다면 데스크톱에서도 확실히 작동할 것입니다. Eclipse.
예시에서 3단계에 나와 있듯이 C 드라이브에 쓰기 문제가 발생했습니다. 다운로드 위치를 D 드라이브로 변경하고 결과를 확인해 보겠습니다.
Messenger 성공적으로 다운로드되었습니다.
계속 진행하기 전에 다운로드한 파일을 삭제하는 것을 잊지 마세요.
WebDriver 및 Wget 사용
다음 예에서는 WebDriver와 wget을 사용하여 Yahoo라는 인기 있는 채팅 소프트웨어를 다운로드합니다. Messenger우리 기지 URL 한다 https://demo.guru99.com/test/yahoo.html.
단계 1) 4단계에서 IOException을 처리해야 하므로 "java.io.IOException" 패키지를 가져옵니다.
단계 2) getAttribute() 메서드를 사용하여 다운로드 링크의 "href" 값을 가져와 문자열 변수에 저장합니다. 이 예에서는 변수 이름을 "sourceLocation"으로 지정했습니다.
단계 3) 다음 명령어를 사용하여 wget의 구문을 설정하십시오.
단계 4) WebDriver 코드에서 wget을 호출하여 다운로드 프로세스를 시작합니다.
요약하면 WebDriver 코드는 아래와 같습니다.
import java.io.IO 예외;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.Firefox운전사;
공개 수업 PG8 {
공공 정적 무효 기본(끈[] args) {
System.setProperty(“웹드라이버.게코.드라이버”,“C:\\geckodriver.exe”);
끈 baseUrl = “https://demo.guru99.com/test/yahoo.html”;
웹드라이버 운전사 = Firefox운전사();
드라이버.get(baseUrl);
웹 요소 downloadButton = driver.findElement(By.id(“메신저 다운로드”));
끈 sourceLocation = downloadButton.getAttribute(“href”);
끈 wget_command = “cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate “ + 소스 위치;
시도 {
방법 exec = Runtime.getRuntime().exec(wget_command);
INT exitVal = exec.waitFor();
System.out.println(“퇴출 가치: “ + exitVal);
} 따라 (인터럽트된 예외 | IO 예외 전) {
System.out.println(ex.toString());
}
드라이버 닫기();
}
}
이 코드를 실행한 후 D 드라이브를 확인하고 Yahoo가 Messenger 설치 프로그램이 성공적으로 다운로드되었습니다.
사용자 지정 다운로드 경로 설정하기 Selenium 4 CDP
Selenium 4는 Chrome 개발자 도구 프로토콜을 노출시켜 타사 도구 없이 브라우저 다운로드 동작을 제어할 수 있도록 합니다. 아래 코드 조각은 모든 다운로드를 사용자 지정 폴더로 지정하고 '다른 이름으로 저장' 메시지를 건너뛰므로 파일이 테스트에서 예상하는 위치에 저장됩니다.
지도<끈,목적> 매개변수 = HashMap<>();
매개변수.put("행동", "허용하다");
매개변수.put(“다운로드 경로”, “D:\\selenium-downloads”);
드라이버.executeCdpCommand(“페이지.setDownloadBehavior”, 매개변수);
드라이버.get(“https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id(“메신저 다운로드”)).딸깍 하는 소리();
다운로드가 완료되면 대상 디렉터리에서 예상 파일 이름과 파일 크기를 주기적으로 확인하여 검증할 수 있습니다. 이렇게 하면 외부 스크립트 없이도 결과를 확정적으로 확인할 수 있습니다.












