可以使用webkitdotnet在C#中通过WebKit浏览器下载文件吗?

时间:2011-10-03 22:57:09

标签: c# webkit

我正在使用WebKitDotNet来模拟和自动化网络浏览器。这真的很漂亮,并且在大多数方面都有效。但是,当我尝试实现此代码时,WebKit不会触发下载:

WebKitBrowser _b = null;

private void button1_Click(object sender, EventArgs e)
{
    _b = new WebKitBrowser();
    _b.DownloadBegin += new FileDownloadBeginEventHandler(b_DownloadBegin);
    _b.Error += new WebKitBrowserErrorEventHandler(_b_Error);
    _b.AllowDownloads = true;
    _b.Navigate("http://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download");
}

void _b_Error(object sender, WebKitBrowserErrorEventArgs e)
{
    MessageBox.Show("error!");
}

void b_DownloadBegin(object sender, FileDownloadBeginEventArgs e)
{
    MessageBox.Show("hi");
}

“错误”和“DownloadBegin”事件都不会触发。我希望他们中至少有一个能这样做 - 有没有我缺少的设置?

编辑:我知道这是一个老问题,但这是更新。当我写这个问题时,我试图自动化一个需要人类的过程 - 每天一次 - 登录网站,提供凭据,然后单击下载链接。我们希望能够以编程方式做到这一点,以减轻负责这项工作的穷人的单调。

不幸的是,WebKitDotNet在这项任务中没有成功。虽然,在基于webkit的浏览器中,您可以单击链接并触发下载,在嵌入式WebKitDotNet中单击链接时什么也没做。我的猜测是WebKitDotNet中的某些东西丢失了这个事件。如果有人想测试这个,你可以使用Sourceforge下载链接进行测试。

我团队中的一个人最终通过使用名为“IMacros”的Internet Explorer自动化工具解决了这个问题。我们之所以选择这个产品,是因为1)我们可以保证每台运行该程序的计算机都安装了IE,2)IMacros可以正确地从网站接收该事件并触发文件下载。

1 个答案:

答案 0 :(得分:1)

在问题跟踪器上有一个2011年3月24日的发布日期,其中声明下载尚未运行:

https://github.com/webkitdotnet/webkitdotnet/issues/7

由于跟踪器中存在的问题很少,如果同时添加该功能,可能会将其标记为已解决。