2011-05-09 45 views
4

我正在使用IE8和watin,并试图通过我的网页上传文件。我不能简单地使用设置方法设置上传文件,如如何使用watin中的FileUploadDialogHandler访问文件上传对话框

ie.FileUpload(Find.ById(“someId”))。Set(“C:/Desktop/image.jpg”);

因为上传textarea不能在IE8中写入,所以我必须使用FileUploadDialogHandler,但是我找不到任何如何执行此操作的示例。

我已经找到并使用了ConfirmDialogHandler的例子,但我似乎无法弄清楚如何使用FileUploadDialogHandler。

任何例子将不胜感激。

回答

3

您的代码看起来不错。您不必使用FileUploadDialogHandler。当您调用Set方法时,它在内部使用。

+0

但是上传控件中的文本框是不可写的,所以当我进行调用时,Set方法在浏览器中没有任何反应,然后当我尝试执行上载时,我得到的文件不存在错误,这是与我手动操作时发生的情况相同。如果没有让上传对话框先弹出,我无法输入任何文本,而且我也无法弄清楚如何与上传弹出框进行交互。 – michael 2011-05-09 06:33:02

+1

这不是关于文本框。当你调用Set时,WatiN通常会打开一个对话框并使用FileUploadDialogHandler在其中输入文件名。我的猜测是你必须将你的网站添加到信任或类似的东西。 – prostynick 2011-05-09 07:10:12

+0

感谢您的帮助。我将我的网站添加到受信任的网站,现在它可以正常工作:-) – michael 2011-05-10 03:35:29

1

试试这个代码

FileUploadDialogHandler fileupload = new FileUploadDialogHandler("filename.xls"); 
using (new UseDialogOnce(ie.DialogWatcher, fileupload)) 
{ 
    //code to intiate the file upload, like button.Click() 
} 
0

我有同样的问题。对话框打开,但文件路径没有写入。对话框仍然打开。 我发现了一个通过。在使用.Set函数之前,请使用.Click函数。 。

类似的东西:

ie.FileUpload(Find.ById( “someId”))点击(); ie.FileUpload(Find.ById(“someId”))。Set(“C:/Desktop/image.jpg”);

相关问题