2013-04-25 2 views
4

내가 가지고있는 테스트 케이스 중 하나는 파일을 응용 프로그램에 업로드하는 것입니다. Witouth 그리드는 위조 파일을 만들고 파일의 절대 경로를 가져 와서 입력 필드를 채우고 업로드를 클릭하면 쉽게 수행 할 수 있습니다. 그러나 그리드를 사용하고있을 때 파일은 노드를 호스트 한 시스템에 있지 않습니다. 어쨌든 노드에 파일을 보내거나 파일을 만들고 절대 경로를 얻으려고 노드에 알리십시오.셀레늄 그리드에서 파일 만들기 및 업로드

답변

0

로컬 컴퓨터에 파일을 만들 때 정상적으로 수행 할 수 있습니다. 아래를 참조하십시오.

File file = new File("\\\\00.00.00.00\\c$\\somefile.txt"); 
file.createNewFile(); 

이렇게하면 원격 컴퓨터의 'C'드라이브에 somefile.txt라는 파일이 만들어집니다. IP 주소를 원격 시스템으로 변경하십시오.

+2

음 ...하지만 셀레늄 그리드에서 실행하면 노드가 좀 맞지 않습니까? 어떤 노드를 실행할 지 알 수 없습니다. – danggrianto

+0

메소드를 작성하고 필요할 때마다 테스트 메소드에서 호출 할 수 있습니다. 그것은 노드와 독립적입니다. – user2087450

+0

원격 컴퓨터가 Windows가 아니기 때문에 'C'드라이브도없고 Samba도 설치되어 있지 않습니다. –

9

일단 로컬 파일 탐지기를 설정하면 실제로는 매우 간단합니다.

import org.openqa.selenium.remote.LocalFileDetector 
import org.openqa.selenium.remote.RemoteWebDriver 

WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.firefox()); 
driver.setFileDetector(new LocalFileDetector()) 

정상적으로 업로드하면 Selenium은 파일을 노드로 전송합니다.

+0

파일이 노드에서 또는 로컬에서 생성됩니까? – danggrianto

+1

위의 예에서 파일은 테스트를 실행하는 시스템에 있습니다. 그러면 파일이 와이어를 통해 그리드로 전송 된 다음 노드로 전송되어 노드가 파일을 업로드 할 수 있습니다. – Ardesco

+2

개발자의 유머 감동 - FileDetector 구현은 두 가지만 있습니다. 하나는 LocalFileDetector이고 다른 하나는 "결코 찾을 수없는"UselessFileDetector입니다. :) –