developer tip

Java에서 Selenium WebDriver를 사용하여 파일을 업로드하는 방법

copycodes 2020. 12. 4. 19:15
반응형

Java에서 Selenium WebDriver를 사용하여 파일을 업로드하는 방법


누구든지 Selenium by Java 코드를 사용하여 파일을 업로드하는 방법을 알려줄 수 있습니까?

응용 프로그램에서 버튼을 클릭하면 업로드 파일을 선택하는 데 사용할 수있는 새 창에서 열립니다. Silverlight (C #)에서 개발 한 찾아보기 단추입니다.


먼저 입력 요소가 보이는지 확인하십시오

Mark Collin이 여기 토론에서 언급했듯이 :

찾아보기 버튼을 클릭하지 마십시오. 그러면 OS 레벨 대화 상자가 트리거되고 테스트가 종료됩니다.

대신 다음을 사용할 수 있습니다.

driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");

myUploadElement 는 해당 요소 (이 경우 버튼)의 ID이며 sendKeys 에서 업로드하려는 콘텐츠 (이미지, 비디오 등) 절대 경로 를 지정해야합니다 . 나머지는 셀레늄이 알아서 할 것입니다.

업로드는 파일을 보내는 요소가 형식이어야하는 경우 에만 작동합니다.<input type="file">


driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension");

이것은 업로드 창을 통해 이미지를 업로드하는 데 사용하는 것입니다.

    //open upload window
    upload.click();

    //put path to your image in a clipboard
    StringSelection ss = new StringSelection("C:\\IMG_3827.JPG");
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

    //imitate mouse events like ENTER, CTRL+C, CTRL+V
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

끝난


파일 경로를 입력 할 텍스트 상자가있는 경우 sendkeys를 사용하여 파일 경로를 입력하고 제출 버튼을 클릭하십시오. 파일 경로를 입력 할 텍스트 상자가없고 찾아보기 버튼 만 클릭하고 Windows 팝업에서 파일을 선택할 수있는 경우 AutoIt 도구를 사용할 수 있습니다. AutoIt을 사용하려면 아래 단계를 참조하세요.

  1. http://www.autoitscript.com/site/autoit/ 에서 Autoit 도구를 다운로드하고 설치합니다 .

  2. 프로그램-> Autoit 도구-> SciTE 스크립트 편집기를 엽니 다.

  3. Autoit 편집기에 다음 코드를 붙여넣고 "filename.exe"(예 : new.exe)로 저장합니다.

    그런 다음 파일을 컴파일하고 빌드하여 exe로 만듭니다. (도구 → 컴파일)

Autoit 코드 :

WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)    
Send("logo.jpg"); File name    
Send("{ENTER}")

그런 다음 Autoit 도구-> SciTE 스크립트 편집기의 도구 메뉴에서 컴파일 및 빌드합니다.

Eclipse 편집기에 아래 Java 코드를 붙여넣고 저장하십시오.

자바 코드 :

driver.findElement(By.id("uploadbutton")).click; // open the Upload window using selenium    
Thread.sleep("20000"); // wait for page load    
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C:\\Documents and Settings\\new.exe"); // Give  path where the exe is saved.

나는 위의 로봇을 사용하려고 시도했지만 지연을 추가해야 할 필요가 있습니다 :( 또한 초점을 잃기 때문에 디버깅하거나 다른 작업을 할 수 없습니다 :(

// 업로드 창 열기 upload.click ();

//put path to your image in a clipboard
StringSelection ss = new StringSelection(file.getAbsoluteFile());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

//imitate mouse events like ENTER, CTRL+C, CTRL+V
Robot robot = new Robot();
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(50);
robot.keyRelease(KeyEvent.VK_ENTER);

태그를 type="file". 이것은 셀레늄이 지원하는 메인 태그입니다. 권장 될 때 동일하게 XPath를 빌드 할 수있는 경우.

  • 찾아보기 옵션이있는 버튼에 sendkeys 사용 (파일을 선택하기 위해 창 상자를 여는 버튼)
  • 이제 파일을 업로드 할 버튼을 클릭하십시오.

아래 :-

driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg"");
Thread.sleep(5000);    
driver.findElement(By.xpath("//button[@id='Upload']")).click(); 

여러 파일 업로드의 경우 모든 파일을 sendkeys로 하나씩 넣은 다음 업로드를 클릭하십시오.

driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"Lighthouse.jpg"");  
driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"home.jpg");
driver.findElement(By.xpath("//input[@id='files']")).sendKeys("D:"+File.separator+"images"+File.separator+"tsquare.jpg");
Thread.sleep(5000); 
driver.findElement(By.xpath("//button[@id='Upload']")).click(); // Upload button

참고URL : https://stackoverflow.com/questions/16896685/how-to-upload-file-using-selenium-webdriver-in-java

반응형