2016-11-30 4 views
3

ABC 문자열을 Windows 파일 대화 상자의 입력 필드에 보내려고합니다. 이 코드 라인을 사용하면 포커스를 올바른 요소로 설정할 수 있습니다. 커서가 깜박입니다.Keys를 Windows 파일 대화 상자로 보내기

var filedialogOverlay = drv.SwitchTo().ActiveElement(); 

그러나 다음 코드는 문자열을 요소에 쓰지 않습니다.

Thread.Sleep(1000); 
filedialogOverlay.SendKeys("ABC"); 

편집 : 파일 업로드 프롬프트가 나는 테스트 할 웹 사이트가 표시됩니다. 블랙 박스 테스트 때문에 소스 코드를 볼 수 없습니다. GUI를 분석 할 수있는 도구가 있습니까?

입력 요소를 마우스 오른쪽 버튼으로 클릭하면 다음과 같은 선택을합니다.

drv.FindElement(By.XPath("//input[@type='file']")).SendKeys("ABC"); 

추신 : 당신이 파일을 업로드해야하는 경우

enter image description here

+0

http://www.cumc.columbia.edu/it/howto/remote/img/dnuploadfile25.jpg와 같은 파일 업로드 프롬프트를 의미하는 경우 코드가 작동하지 않습니다. 'drv.SwitchTo(). ActiveElement();'는 현재 집중하고있는 요소로 전환 할 수 있습니다. 커서가있는 텍스트 입력 필드 ... 파일을 업로드하려면 파일 경로를''요소로 보내야합니다. – Andersson

+1

'ActiveElement()'메소드는 파일이 아닌 페이지의 활성 요소를 반환합니다 대화. Selenium은 파일 대화 상자를 지원하지 않지만''요소에서 파일의 경로와 함께 직접'Sendkeys'를 호출하여 파일 업로드를 지원합니다. –

+1

@Florent B. 대답 전체 코드를 보여 주시겠습니까? – kame

답변

1

당신은 SendKeys.SendWait 윈도우의 형태

//Input the file path into the filename field: 
SendKeys.SendWait(longfilepath); 
//Input "Enter" key 
SendKeys.SendWait(@"{Enter}"); 

https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait(v=vs.110).aspx

을 사용할 수 있습니다 ... "//input[@id='some_specific_file_upload']"처럼 XPath 더 구체적으로해야 할 수도 있습니다
+0

에있는 업로드 버튼을 마우스 오른쪽 버튼으로 클릭하십시오. 늦게 답변을 드려 죄송합니다.이 링크를 참조하십시오 : [link] (http://stackoverflow.com/questions/15653921/get-current-folder-path) –

1

, 해당 입력 필드에 직접 파일에 경로를 보내려고 페이지에있는 파일 업로드에 대해 하나 개 이상의 입력 필드가있는 경우, 당신은

+0

그러나 어떻게 입력 필드 이름을 얻습니까? 나는 "Windows"의 표준 대화 상자 오버레이를 의미합니다. – kame

+0

파일 업로드 요청을 열기 위해서는 분명히 버튼을 클릭해야합니다. 해당 버튼의'HTML'을 확인하면''요소를 찾을 수 있습니다. – Andersson

+0

코드를 볼 기회가 없습니다. 나는 블랙 박스 테스터이다. GUI 분석 도구가 있습니까? – kame