我需要在网站上传文件。 但有问题,我无法在代码中自动选择文件。总是浏览器显示我选择文件窗口。 我的代码有什么问题?
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 :(得分:1)
为什么需要从对话框中进行选择?尝试只设置文本:
ie.FileUpload(Find.ById("profile_file")).Text = "C:/Desktop/image.jpg";
我猜你可能会问这个问题的人: WatiN File Upload
答案 1 :(得分:1)
我遇到了同样的问题。我正在使用类似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分钟内完成的最佳方案。
如果有人有更好的选择,请告诉我们!