2011-04-01 72 views
6

我使用WatiN从多个网站自动进行文件传输(EDI交易),不幸的是FTP或任何更自动化的东西都不是一种选择。对于下载,我使用这个例子的变化:可以在不需要关注的情况下下载文件吗?

FileDownloadHandler download = new FileDownloadHandler(fullFilename); 
using (new UseDialogOnce(ie.DialogWatcher, download)) 
{ 
    lnkFile.ClickNoWait(); 

    download.WaitUntilFileDownloadDialogIsHandled(15); 
    download.WaitUntilDownloadCompleted(150); 
} 

这工作正常,唯一的问题是,它需要重点。有几十个文件需要下载,这可能需要一段时间才能完成,这并不罕见。我在远程会话中运行它,所以我的机器无法使用,但如果有任何方法可以消除对焦需求,它会很方便。

+0

你能解释一下lnkFile应该是什么吗?谢谢! – buzzzzjay 2012-03-15 19:42:08

+1

lnkFile是一个链接,在这种情况下,需要单击以启动文件下载。假设你的WatiN.Core.IE实例被调用,即你可以实例化lnkFile为:lnkFile = ie.Link(Find.ById(“download”)); – 2012-03-15 20:30:33

+0

我建立了一个链接文件,正如你所建议的,但它仍然不会在IE9中下载该文件。任何其他想法?我应该在链接文件中使用除“下载”以外的内容吗?谢谢! – buzzzzjay 2012-03-15 20:34:52

回答

1

我不能直接与WatiN帮忙,但我知道(从我自己使用它)iMacros for IE或iMacros for Firefox确实不是需要专注于文件下载。您可以通过command line使用开源免费版本,也可以通过COM接口使用商用版本。

请参阅ONDOWNLOAD命令。

+0

看来CLI仅适用于他们的脚本版本?理想情况下,我想要COM接口,因为我的程序也具有数据库集成,但目前我的价格太低了。感谢您的信息,但很高兴知道有其他选择! – 2011-04-01 13:43:55

1

而不是Watin,我会使用WebClient类。 http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

应该能够使用该类上传和下载文件。

+0

我只是看着这个,但似乎无法找到处理文件下载对话框的任何方法 - DownloadFile方法可以正常工作,但网站上提供的下载链接不是直接链接到文件。 – 2011-04-01 14:09:03

+0

噢,链接引发一些JS,你需要采取进一步的行动?这确实使事情变得更加复杂。 – Andy 2011-04-01 15:03:09

+0

是的,不幸的是这种情况。 WatiN对于我的所有目标来说都是多才多艺的,这只是对焦点的一个小问题。 – 2011-04-01 15:27:44

相关问题