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을 사용하려면 아래 단계를 참조하세요.
http://www.autoitscript.com/site/autoit/ 에서 Autoit 도구를 다운로드하고 설치합니다 .
프로그램-> Autoit 도구-> SciTE 스크립트 편집기를 엽니 다.
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
'developer tip' 카테고리의 다른 글
두 개의 출력 파일 이름이 동일한 출력으로 확인 됨 (0) | 2020.12.04 |
---|---|
Cloud Foundry 설명 (0) | 2020.12.04 |
ggplot2의 범례에서 포인트 크기를 늘리는 방법은 무엇입니까? (0) | 2020.12.04 |
쿼리 문자열 키는 대소 문자를 구분합니까? (0) | 2020.12.04 |
Java 8의 문자열 중복 제거 기능 (0) | 2020.12.04 |