2010-06-17 53 views
1

我碰到了一个障碍。我正在尝试使用WatiN上传文件。我可以加载上传框,但它很快就会消失。我现在的代码的最后一行是:WatiN文件上传

ie.FileUpload(Find.ById("profile_file")).Click(); 

它加载对话框来选择图片但消失。是否可以自动设置框的路径示例,加载“C:/Desktop/image.jpg”?

另外,是否有可能在继续之前等待上传完成?

非常感谢帮助。

谢谢。

回答

0

尽管这不会直接回答您的问题,但我怀疑有一个DialogWatcher会自动取消对话框。

+0

我已经设法使用FileUpload()的Set()方法,但当它上传图像时,它将关闭该框并导致“未指定的错误”。 实际的上传工作,因为我可以看到它说'上传图像'。 这里有一个奇怪的人。 – 2010-06-17 21:12:31

+0

对不起,图片实际上传了。但它返回一个错误。 – 2010-06-17 21:12:50

0

为什么你需要从对话框中选择..尝试只是发送文本:

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

我想你需要检查这个问题&搜索的人也发布它 http://stackoverflow.com/questions/3043391/use-watin-for-automation-upload-file-on-the-website – 2010-08-04 21:07:43

0

作为一种安全措施,浏览器不允许脚本来设置文件输入的值。想象一下,如果他们这样做了,我可以在我的页面上放置一个隐藏文件输入,并将其值设置为c:\ topsecretinfo.txt,而不需要用户的许可。那么当用户提交表单时,我会拥有他们的绝密信息。

幸运了吧,今天我就遇到了这个问题,这是我做过什么绕过它:

  • 创建一个名为“testupload”页面上的一个新的隐藏字段。
  • 使用华廷这个隐藏字段的路径值设置为我的测试 文件
  • 在服务器端,我检查这个领域,如果它存在的, 不是读取发布文件,我读到这文件从我的本地 机器。
0

这已经6年了,但如果其他人(如我)仍然遇到麻烦,这里有一个解决方案。

填写文件的对话,试试这个:

ie.FileUpload(Find.ById("profile_file")).Set("filename.txt"); 

这会自动拉起文件的对话。然后您会看到文本被自动输入到文件选择文本字段中。

不需要任何sendkeys。