使用WatiN进行网站上的自动上传文件

时间:2010-06-15 07:52:35

标签: upload file-upload dialog 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();

2 个答案:

答案 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分钟内完成的最佳方案。

如果有人有更好的选择,请告诉我们!

相关问题