2010-06-15 1 views
1

웹 사이트에 파일을 업로드해야합니다. 하지만 문제가 있습니다. 코드에서 자동으로 파일을 선택할 수 없습니다. 항상 브라우저에서 파일 선택 창을 보여줍니다. 내 코드가 잘못 되었나요?웹 사이트의 자동화 업로드 파일에 WatiN을 사용하십시오.

IE ie = new IE("https://www.xxxx.com/WFrmlogin.aspx"); 
FileUploadDialogHandler uploadHandler = new FileUploadDialogHandler(@"D:\065-6405_URGENT.xls"); 

ie.WaitForComplete(); 
ie.TextField(Find.ById("txtUser")).TypeText("login"); 
ie.TextField(Find.ById("txtPassWord")).TypeText("***"); 

ie.Button(Find.ById("btnok")).Click(); 
ie.WaitForComplete(); 


ie.GoTo("https://www.orientspareparts.com/inq/WFrmUpOption.aspx"); 
ie.WaitForComplete(); 

ie.DialogWatcher.Clear(); 
ie.AddDialogHandler(uploadHandler); 
// This code show choose file dialog 
ie.FileUpload(Find.ById("FilUpload")).ClickNoWait(); 


ie.Button(Find.ById("butUpload")).Click(); 
ie.WaitForComplete(); 

답변

0

왜 대화 상자에서 선택해야합니까? 그냥 텍스트를 설정하려고 : WatiN File Upload

0

은 저도 같은 문제를 겪고 :

ie.FileUpload(Find.ById("profile_file")).Text = "C:/Desktop/image.jpg"; 

나는 당신이이 질문을 동료에게 이야기 할 수 같아요. Gmail과 같은 업로드 프로세스를 사용하고 있으므로 실제 사용 사례를 테스트하고 싶습니다. 숨겨진 파일 입력에 Text 속성을 설정하는 것만으로는 옵션이 아닙니다.

나는 SendKeys를 사용하여 파일 경로를 입력 한 다음 "{ENTER}"(을)를 보내 대화 상자를 제출했습니다.

SetForegroundWindow(browser.hWnd); 
SendKeys.SendWait("{ENTER}"); 
Thread.Sleep(500); // An unfortunate necessity, to give the dialog time to pop up. 
SendKeys.SendWait(@"C:\myfile.jpg{ENTER}") 

나는이 해결책을, 특히 잠을 좋아하지 않는다. 그러나 나는 30 분 이내에 할 수있는 최선이었다.

더 좋은 옵션이 있으면 알려주세요.