how upload file using selenium webdriver 3 methods
코드 예제를 통해 Selenium에서 파일 업로드를 처리하는 다양한 방법을 알아 봅니다.
파일 업로드는 양식, 등록 페이지, 문서 업 로더 등과 같은 특정 웹 사이트에 파일 또는 문서를 업로드해야 할 때 수행됩니다.
파일 업로드 프로세스에는 원하는 위치 또는 컴퓨터에서 파일을 찾아 웹 사이트에 업로드하는 작업이 포함됩니다.
학습 내용 :
셀레늄 업로드 파일
Selenium에서 파일 업로드를 처리하면 사람이 쉽게 작업 할 수 있으며 다음을 사용하여 간단히 수행 할 수 있습니다. sendKeys () 방법. 파일을 업로드 한 후 파일이 성공적으로 업로드되었는지 확인하는 메시지가 표시됩니다. 파일 업로드를위한 더 많은 자동화 방법이 있습니다.
이 튜토리얼에서 다루는 주제에는 HTML로 파일 업로드, Selenium에서 파일 업로드를 처리하는 방법 (즉, sendKeys 사용, AutoIT 및 Robot 클래스 사용)이 포함됩니다.
이 튜토리얼은 또한 Selenium에서 이러한 메소드를 사용하여 파일 업로드를 처리하기위한 코드의 구현을 설명합니다. 그 후 Selenium의 도움으로 파일 업로드가 수행되는 몇 가지 예를 볼 수 있습니다.
HTML로 파일 업로드
아래 코드 구현은 HTML 페이지에서 파일 업로드 작업을 설명합니다. HTML 코드는 먼저 클릭하여 업로드 작업을 수행 할 수있는 방법을 보여줍니다. 파일을 선택 버튼을 눌러 업로드 할 파일을 찾은 다음 파일 업로드 옵션을 선택하면 파일이 성공적으로 업로드 된 것을 볼 수 있습니다.
위의 이미지는 HTML로 생성 된 페이지로 구성되며 아래는 동일한 HTML 코드입니다. HTML 코드를 간단히 살펴 보겠습니다.
File Upload File Uploading (Upload the image file)
Select file to upload:
따라서 원하는 파일을 업로드 할 때 파일 업로드 옵션을 선택하면 업로드하도록 선택한 파일이 성공적으로 업로드되었음을 확인하는 아래 페이지 (이미지)가 표시됩니다 (즉, 업로드 된 이미지 파일이 표시됨).
(영상 출처 )
Selenium에서 파일을 업로드하는 방법
파일 업로드를 처리하는 몇 가지 방법과 이에 대한 코드 구현을 살펴 보겠습니다.
Selenium에서 파일 업로드는 다음 방법으로 수행 할 수 있습니다.
- sendKeys 메서드 사용
- AutoIT 도구 사용
- 로봇 클래스의 도움으로
# 1) sendKeys 메서드 사용
Selenium에서 파일을 업로드하는 가장 기본적인 방법은 sendKeys 메소드를 사용하는 것입니다. Selenium에서 파일 업로드를위한 내장 기능입니다.
구문은 다음과 같습니다.
C ++ 이중 연결 목록
WebElement upload_file = driver.findElement(By.xpath('//input(@id='file_up')')); upload_file.sendKeys('C:/Users/Sonali/Desktop/upload.png');
위의 기술에 대한 코드 구현을 이해하겠습니다.
이 방법을 사용하여 파일을 업로드하려면 먼저 파일 업로드를 위해 제공된 요소 또는 버튼을 검사 한 다음 sendKeys를 사용하여 업로드 할 실제 파일이 보관되는 경로를 찾아야합니다. 프로그램이 파일을 가져 오기 위해 언급 된 경로로 이동하도록 sendKeys에 파일 이름과 함께 경로를 배치하십시오.
그런 다음 저장 또는 제출 버튼을 클릭하면 파일이 업로드 된 것으로 보입니다. 때때로 파일이 성공적으로 업로드되고 있다는 메시지도 수신됩니다.
sendKeys 메소드를 사용한 코드 구현 :
package SeleniumPrograms; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class FileUpload { public static void main(String() args) throws IOException, InterruptedException { // TODO Auto-generated method stub WebDriver d = new FirefoxDriver(); d.manage().window().maximize(); //always write wait code after this d.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //for page load d.get('https://www.monsterindia.com/seeker/registration'); //Testing webpage d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait JavascriptExecutor js = (JavascriptExecutor)d; //Scrolling using JavascriptExecutor js.executeScript('window.scrollBy(0,380)');//Scroll Down to file upload button (+ve) Thread.sleep(3000); // FILE UPLOADING USING SENDKEYS .... WebElement browse = d.findElement(By.xpath('//input(@id='file-upload')')); //click on ‘Choose file’ to upload the desired file browse.sendKeys('C:\Users\Chait\Desktop\Files\Job Specification.txt'); //Uploading the file using sendKeys System.out.println('File is Uploaded Successfully'); } }
따라서 sendKeys 옵션을 사용하여 파일을 업로드하려면 내장 된 sendKeys 메소드를 사용하여 필요한 파일을 성공적으로 업로드하면됩니다.
이것은 위 코드의 출력입니다. Monster.com ) 다음과 같이 표시되는 메시지를 볼 수 있습니다. '파일이 성공적으로 업로드되었습니다' sendKeys 메서드를 사용하여 셀레늄 웹 드라이버에 파일을 업로드 할 때.
# 2) AutoIT 사용
AutoIT Windows 운영 체제 용 프리웨어 및 오픈 소스 자동화 도구입니다. Microsoft Windows 사용자 인터페이스를 자동화하기 위해 BASIC 스크립팅 컴퓨터 언어로 작성되었습니다. 키 입력, 마우스 이동 및 창 제어 조작의 모든 조합을 시뮬레이션합니다.
AutoIT 도구를 다운로드하고 설치하는 단계 :
- 열다 링크
- AUTOIT-> 다운로드로 이동합니다. 최신 AutoIT를 다운로드하십시오.
- AutoIT 설치 및 설정을 진행합니다 (다음-> 동의-> 32/64 비트 선택-> 파일 설치 위치 선택-> 마침).
- 2 개의 설정 파일이 있습니다. a) AutoIt 버전 3 그리고 b) SciTE 자동 3.
- 설치가 완료되면 AutoIT 편집기를 엽니 다.
- 설정 파일이 저장된 위치로 이동하여 ‘SciTE.exe’파일을 클릭하면 AutoIT 편집기가 열립니다. AutoIT 편집기는 아래 스크린 샷을 참조하십시오.
AutoIT_Editor :
이제 간단히 이해합시다 이 도구를 사용하는 방법 :
- AutoIT 편집기를 엽니 다.
- 파일 업로드 작업에 필요한 AutoIT 편집기에서 간단한 코드를 작성해야합니다 (업로드 할 파일의 이름은 코드에 언급 됨).
- 이제 편집기를 닫고 마우스 오른쪽 버튼으로 클릭하면 컴파일 스크립트 옵션이 표시됩니다. 64 비트 컴퓨터의 경우 컴파일 스크립트 (x64) 옵션을 선택하고 32 비트 컴퓨터의 경우 컴파일 스크립트 (x86)를 선택합니다.
- 위의 단계가 완료 되 자마자 .exe 파일이 생성되고이 파일은 셀레늄 이클립스 코드에 언급됩니다. 컴파일 후 아래 이미지와 같이 ‘fileupload.exe’ 파일이 생성됩니다. 이제 Selenium 웹 드라이버 스크립트에서이 파일을 사용할 수 있습니다.
저장된 _ 파일 :
아래 이미지는 fileupload.exe 파일을 실행하는 selenium eclipse 스크립트를 실행하여 form.csv 인 업로드 할 파일이 어떻게 업로드되는지 이해하는 데 도움이됩니다.
>> 이것을 방문하십시오 페이지 AutoIT에 대한 자세한 내용은.
이 튜토리얼의 뒷부분에서이 메서드의 구현을 볼 수 있습니다.
AutoIT의 장점 :
- AutoIT는 우리가 지불 할 필요가없는 오픈 소스 도구입니다.
- AutoIT를 사용하여 작은 독립 실행 형 실행 파일을 만들 수 있습니다.
- 기록 또는 재생 스크립팅을 쉽게 지원합니다.
- 코드를 쉽게 디버깅 할 수 있습니다. 콘솔 쓰기 명령 .
- 다른 GUI를 생성 할 수있는 옵션이 있으며 거의 모든 기본 Windows 컨트롤을 인식합니다.
- 간단하고 사용자 친화적입니다.
AutoIT의 단점 :
- Windows 운영 체제에서만 작동합니다.
- 기본 코딩 원칙 지식은 필수이므로 전문가에게는 훌륭한 도구이지만 초보자에게는 약간 복잡 할 수 있습니다.
- AutoIT는 지금까지 사용 가능한 Java 지원이 없습니다.
- 사용자는 미리 정의 된 다른 유틸리티 기능을 사용하면서 별도의 라이브러리를 가져와야합니다.
이제 AutoIT를 사용하여 파일 업로드의 구현 코드로 이동하겠습니다.
여기에서는 Selenium에서 AutoIT를 사용하여 파일 업로드를 처리하는 방법을 알아 봅니다. 이를 위해 OrangeHRM 웹 사이트의 예를 살펴 보겠습니다.
AutoIT를 사용하여 Selenium에서 파일 업로드를 처리하기위한 코드 구현 :
package SeleniumPrograms; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class FileUpload { public static void main(String() args) throws IOException, InterruptedException { // TODO Auto-generated method stub WebDriver d = new FirefoxDriver(); d.manage().window().maximize(); d.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); // for page load d.get(“https://opensource-demo.orangehrmlive.com/“); // Testing webpage d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // for Implicit wait WebElement uname = d.findElement(By.id('txtUsername')); // Username.........ID uname.sendKeys('Admin'); WebElement pwd = d.findElement(By.name('txtPassword')); // Password.........NAME pwd.sendKeys('admin123'); WebElement loginb = d.findElement(By.xpath('//input(@id='btnLogin')')); loginb.click(); // Loginbutton......XPATH WebElement pim = d.findElement(By.id('menu_pim_viewPimModule')); pim.click(); // Admin tab-PIM WebElement config = d.findElement(By.id('menu_pim_Configuration')); config.click(); //Configuration tab WebElement data_imp = d.findElement(By.partialLinkText('Data ')); data_imp.click(); //Data Import tab.....PARTIALLINKT // UPLOADING FILE USING AutoIT.... WebElement browser = d.findElement(By.xpath('//input(@id='pimCsvImport_csvFile')')); //Browse button browser.click(); System.out.println(“1”); Runtime.getRuntime().exec('C:\Users\Chait\Desktop\autoit\fileupload.exe'); System.out.println('2'); Thread.sleep(3000); WebElement upload = d.findElement(By.id('btnSave')); //Upload button upload.click(); System.out.println('3'); System.out.println('File Uploaded Successfully'); // Confirmation message } }
위의 코드에서 볼 수 있듯이 다음 줄은 AutoIT 사용을 보여주기 때문에 매우 중요합니다.
Runtime.getRuntime (). exec (“C : \ Users \ Chait \ Desktop \ autoit \ fileupload.exe”);
여기,
- 실행 시간 : 스크립트가 실행중인 환경과 인터페이스 할 수 있습니다.
- getRuntime () : 프로세스와 관련된 현재 런타임을 가져 오는 데 사용됩니다.
- exec () : AutoIT 스크립트 (여기서는 fileupload.exe)를 실행합니다.
프로그램이이 줄을 실행하면 아래와 같이 AutoIT 코드가 실행되는 fileupload.exe 파일을 통과합니다.
ControlFocus('File Upload','','Edit1') ControlSetText('File Upload','','Edit1','C:UsersChaitDesktopautoitdata_file.csv') ControlClick('File Upload','','Button1')
여기,
- ControlFocus : 이 방법은 입력 포커스를 '파일 이름'텍스트 상자로 설정합니다.
- ControlSetText : 이 메서드는 파일의 경로를 정의합니다. '파일 이름'텍스트 상자에 업로드 할 파일-경로가 추적됩니다.
- ControlClick : 이 방법은 파일 업 로더 창의 '열기'버튼을 클릭하는 데 사용됩니다.
위 코드의 출력은 다음과 같습니다.
(영상 출처 )
# 3) 로봇 수업의 도움으로
우리가 알고있는 로봇은 일부 작업 수행, 키보드 기능 처리, 마우스 기능 등과 같은 다양한 활동을 관리하는 데 도움이됩니다. 여기서는 응용 프로그램을 테스트하는 동안 키보드와 마우스를 제어하는 데 도움이되는 특정 기능을 이해합니다. 셀렌 .
로봇 클래스를 구현하기위한 KeyEvents 또는 메서드
Robot 클래스의 구현에는 테스트 스크립트를 실행하는 몇 가지 방법이 있습니다.
아래에 설명되어 있습니다.
- 키 누름(): 이 메서드는 아무 키나 누르고 싶을 때 호출됩니다.
-
- 예: robot.keyPress (KeyEvent. UK_ENTER );
- KeyRelease () : 이 방법은 누른 키를 해제하는 데 사용됩니다.
- 예: robot.keyRelease (KeyEvent. UK_ENTER );
- MouseMove () : 'X'및 'Y'좌표 위로 마우스 포인터를 움직여야 할 때 사용됩니다.
- 예: robot.mouseMove ( coordinates.get.X () , coordinates.get.Y () );
- MousePress () : 이 메서드는 마우스 왼쪽 버튼을 누르고 싶을 때 호출됩니다.
- 예: robot.mousePress (InputEvent. BUTTON_MASK );
- MouseRelease () : 이 메서드는 누른 마우스 버튼을 놓는 데 사용됩니다.
- 예: robot.mouseRelease (InputEvent. BUTTON_DOWN_MASK );
로봇 클래스의 장점
- 로봇 클래스를 사용한 파일 업로드는 쉽습니다.
- 키보드 및 마우스 기능을 처리합니다.
- 팝업 처리도 가능합니다.
로봇 클래스의 단점
- 키보드 또는 마우스 이벤트는 창의 현재 인스턴스에서만 작동합니다.
- 로봇 이벤트를 실행하는 동안 코드 실행이 다른 창으로 이동하면 마우스 또는 키보드 이벤트는 여전히 이전 창에 남아 있습니다.
- 다른 창으로 전환하는 것은 쉽지 않습니다.
로봇 클래스를 사용한 파일 업로드 용 코드 구현 :
이를 위해 우리는 Grammarly.com 웹 사이트. 다음은 Robot 클래스를 사용하여 Selenium에서 파일 업로드를 처리하기위한 구현 코드입니다.
package SeleniumPrograms; import java.awt.AWTException; import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; import java.util.concurrent.TimeUnit; import java.awt.Robot; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import com.sun.glass.events.KeyEvent; public class FileUpload_Robo { public static void main(String() args) throws InterruptedException, AWTException { // TODO Auto-generated method stub WebDriver drv = new FirefoxDriver(); // starting Firefox browser drv.manage().window().maximize(); // maximizing window drv.manage().timeouts().pageLoadTimeout(10, TimeUnit. SECONDS);//for page load drv.get('https://www.grammarly.com/plagiarism-checker');//open testing website drv.manage().timeouts().implicitlyWait(10, TimeUnit. SECONDS);// for Implicit wait JavascriptExecutor js = (JavascriptExecutor)drv; // Scroll operation using Js Executor js.executeScript('window.scrollBy(0,200)'); // Scroll Down(+ve) upto browse option Thread.sleep(2000); // suspending execution for specified time period WebElement browse = drv.findElement(By.linkText('Upload a file')); // using linkText, to click on browse element browse.click(); // Click on browse option on the webpage Thread.sleep(2000); // suspending execution for specified time period // creating object of Robot class Robot rb = new Robot(); // copying File path to Clipboard StringSelection str = new StringSelection('C:\Users\Chait\Desktop\File upload.docx'); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(str, null); // press Contol+V for pasting rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); // release Contol+V for pasting rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyRelease(KeyEvent.VK_V); // for pressing and releasing Enter rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); } }
위 셀레늄 코드의 출력은 다음과 같습니다.
따라서 로봇 클래스의 도움으로 파일을 업로드 할 수 있습니다. 여기서 복사, 붙여 넣기, 입력 등을 위해 키 누름 및 키 해제와 같은 입력 이벤트의 사용을 볼 수 있습니다.
파일 업로드 예
Selenium의 도움으로 수행되는 파일 업로드의 몇 가지 예를 살펴 보겠습니다.
# 1) Gmail 계정
Gmail 계정에서 다른 사람에게 이메일을 보내는 동안 첨부 파일 (예 : 문서, 텍스트, csv, 이미지, pdf 등 모든 유형의 파일 문서)을 포함 할 수 있습니다. 여기에서 파일 업로드는 문맥에 따릅니다.
자세한 내용은 아래 파일 업로드 스크린 샷을 참조하십시오.
# 2) 검증을위한 문서 업로드
일반적으로 등록 페이지 또는 양식의 경우 확인을 위해 문서를 업로드해야합니다.
자세한 내용은 아래 이미지를 참조하십시오.
ID_Proof
Reg_form
증명 검증, 주소 검증, 교육 증명 등과 같은 다양한 검증을 위해 특정 문서를 업로드해야합니다.
결론
따라서이 자습서에서는 HTML 페이지에서 파일 업로드를 확인했습니다. 또한 Selenium에서 파일 업로드를 처리하는 다양한 방법 (sendKeys 사용, AutoIT 사용 및 Robot 클래스 사용과 같은 방법 포함)을 보았습니다. 또한 이러한 각 메서드에 대해 Selenium에서 파일 업로드를 처리하는 코드 구현을 이해하고 마지막으로 몇 가지 예를 살펴 보았습니다.
저자 약력 –이 기사는 MITCOE, Pune, Professional Software Tester 및 Content Writer의 공인 B.E. (컴퓨터) 인 Sonali Satpute가 작성했습니다.
추천 도서
- AutoIT를 사용하여 Selenium에서 Windows 팝업을 처리하는 방법
- Selenium WebDriver에서 라디오 버튼을 선택하는 방법은 무엇입니까?
- 예제와 함께 셀레늄의 확인란을 선택하는 방법
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- ChromeDriver Selenium 자습서 : Chrome에서 Selenium Webdriver 테스트
- 자바를 사용하는 Selenium WebDriver의 로봇 클래스
- AutoIt 튜토리얼-AutoIt 다운로드, 설치 및 기본 AutoIt 스크립트