Use WatiN for automation upload file on the website

允我心安 提交于 2020-01-05 05:32:25

问题


I need upload file on the website. But Have a problem, i can't choose file automatic in code. Always browser show me choose file window. What wrong in my code?

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();

回答1:


I had the same problem. I'm using a GMail-like upload process, so I wanted to test actual use-cases. Just setting the Text property on my hidden file input wasn't an option.

I ended up using SendKeys to type the path to my file, then sent "{ENTER}" to submit the dialog.

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}")

I don't love this solution, especially not the sleep, but it was the best I could do in under 30 mins.

If anyone has a better option, let me know!




回答2:


Why do you need to select from the Dialog? Try to just set the Text:

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

I guess you might talk to the fellow who asked this question: WatiN File Upload



来源:https://stackoverflow.com/questions/3043391/use-watin-for-automation-upload-file-on-the-website

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!