希望你做得好。
我的要求是从需要登录密码的网站下载一些文件。我能够一直导航到文件生成页面。(使用.Net webBrowser控件)。我被困在文件保存对话框中。我想跳过它但无法这样做,因为没有直接链接到要下载的文件。调用一个函数,即时创建文件。
我正在考虑使用 webBrowser 之外的其他内容。请指导我,如果webkit也显示相同的文件对话框? 使用webKit分别有更简单的方法可以跳过它吗?
我使用的是.Net 4.5和Windows 7 32位。
SendKeys.WaitSend("{Enter}")
结果: Enter被发送到webbrowser控件,而不是文件下载对话框。我试图获取文件对话框的过程。但是Process" WindowsFormsApplication.vshost" **没有任何子进程。
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
WebClient client = new WebClient();
client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
client.DownloadDataAsync(e.Url);
结果: e.URL没有直接联系。单击要下载的文件时,将在后端调用一个函数。我在Firefox中看到了该函数中的代码,这就是这一行:
document.location.href = 'something.do?something='+variable1+'&something='+variable2+ '&something=' + variable3;
调查上面,我可以通过在浏览器中粘贴以下行来直接调用该函数。(如果我的会话未到期):
我接下来看到的是一个询问保存/打开/取消的对话框。
谢谢你, 问候
答案 0 :(得分:1)
我使用pinvoke完成了它。将保存对话框窗口置于前面,然后向其发送密钥。
IntPtr fileDownloadDialogPointer = FindWindow(null, "File Download");
SetForegroundWindow(fileDownloadDialogPointer);
SendKeys.SendWait("%s");
%s代表“Alt + S”。在此之后,将出现另存为对话框。以同样的方式处理它。 谢谢大家