2012-10-25 4 views
0

Selenium을 처음 사용하고 WebDriver를 사용하여 파일을 업로드하려고합니다. 여기에 다음과 같이 DOM 요소를 사용하여 찾아보기 단추를 클릭하는 것을 시도하고있다 : 어떻게 나 XPATH 내 DOM 요소를 변경할 수 있습니다 Selenium WebDriver에서 sendKeys()를 사용합니다.

selenium.type("document.forms['UploadForm'].elements['browsebutton']",file.getAbsolutePath()); 

그러나 접근 방식은 다음과 같이 WebDriver 요소를 사용하여 찾아보기 버튼을 눌러하려고 작동하지 않았기 때문에

아래에 CSS 선택기?

driver.findElement(By.cssSelector("input[type=\"file\"]")).click(); 

내가 같은 이름과 값을 여러 찾아보기 버튼이 있기 때문에

selenium.click("xpath="//input[@name='uplaod' and @value='browsebutton']"); 

로 나는 .. XPath를 쓰기 질수 그래서 내가 DOM 요소 자체를 사용하여 선택해야합니다. 어떻게해야합니까?

미리 도움을 청하십시오. 그러나뿐만 아니라 ID를 사용하여 I 시도

String upload="(//input[@name='bulkUnBlockUploadForm' and @value='requestFile'])[2]"; 
String button="(//input[@name='bulkUnBlockUploadForm' and @value='process'])[2]"; 

작동하지 :

도미니크 난에 이름 속성이 없기 때문에 아래 XPath를 사용하여 시도했다

String upload="(//input[@id='content' and @value='requestFile'])[1]"; 
    String button="(//input[@id='content' and @value='process'])[1]"; 

을 작동하지 않는 문제는에 내 JSP로, 나는 같은 ID와 동일한 값,하지만 다른 form.I 2 browse 버튼을 가지고 동일한 id와 같은 가치,하지만 다른 forms.So 위의 접근 방식을 사용하여 때마다 둘 다 타격 버튼을 찾아보기 버튼 각각에 대한 제출 버튼이 2 제출 버튼

+0

Selenium을 처음 접한다면 ** WebDriver **를 사용할 수 있습니다. 지금 사용하는 셀레늄은 단지 언데드입니다! –

+0

다른 요소에 대해 동일한 'id'를 사용하면 안됩니다. 'id'가 유일하고 의미가 있는지 확인하십시오. 그러면 driver.findElement (By.id())를 사용하여 요소에 쉽게 액세스 할 수 있습니다. – dokaspar

답변

2

이를 파일을 업로드 할 수 있습니다, 그것은 나를 위해 일합니다. 스피 초보자 내가 또한 같은 문제의 사람을 찾아

public static void main(String[] args) 
{ 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.freepdfconvert.com/"); 
    driver.findElement(By.id("UploadedFile")).sendKeys("C:\\Users\\Reputa\\Downloads\\HP1.pdf");   
    try { 
      Thread.sleep(4000); 
     } catch (Exception e) {} 
    driver.findElement(By.name("pdfsubmit")).click(); 
     } 
0

당신이 동일한 속성을 가진 두 개의 버튼이있는 경우, 다음 중 하나를 (그들에게 고유 ID를 부여하여, 예를 들어) 더 나은 액세스 할 수 이름을 바꾸거나 이런 일에 XPath에 문을 변경하려고 :

String uploadButton1 = "(//input[@name='upload' and @value='browsebutton'])[1]"; 
String uploadButton2 = "(//input[@name='upload' and @value='browsebutton'])[2]"; 
driver.findElement(By.xpath(uploadButton1)).click(); 
driver.findElement(By.xpath(uploadButton2)).click(); 
+0

Dominik은 테스트 케이스별로 2 개의 찾아보기 버튼을 클릭합니다. 첫 번째 일치 항목에 없음 – cxyz

+0

Ok. 그에 따라 내 대답을 편집했습니다. 희망이 도움이됩니다. – dokaspar

+0

나는 시도했지만 솔루션을 얻지 못했습니다. 내 질문을 편집하고 시도한 해결책을 추가했습니다 .u는 그것을 참조 할 수 있습니다. – cxyz

0

안녕하세요 당신이 그렇게 타사 응용 프로그램 등 AutoIt을, 스피 사용하여 AutoIt이를 사용하여 제어합니다 창을 처리하지 못할 내게 말했다.

1. download autoit. 
    2. no need of any jars just add Runtime,getruntime().execute('path of exe');in your code 
    3.code of file upload is below 

Local $hWnd=WinWait("[CLASS:#32770]","",10) 
ControlFocus($hWnd,"","Edit1") 
Sleep(2000) 
ControlSetText($hWnd, "", "Edit1", "path of file to upload") 
Sleep(2000) 
ControlClick($hWnd, "","Button1"); 

4 쿼리를 찾으면 여전히 Java 응용 프로그램을 실행하십시오.

관련 문제