如何自动点击“你想打开还是保存?”

我想知道以下是否有ac#或selenium解决方案:

在此处输入图像描述

我正在使用selenium从网络服务器上下载文件。

不幸的是在IE9中没有办法禁用这个弹出屏幕。

在c#中是否有单击SAVE按钮的解决方案?

客户

WebClient client = new WebClient(); byte[] file = client.DownloadData("http://domain.com/default.aspx"); File.WriteAllBytes("helloworld.txt", file); 

服务器

 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { using (MemoryStream memory = new MemoryStream()) using (StreamWriter writer = new StreamWriter(memory)) { // The bytes written can be anything, does not have to be text writer.WriteLine("hello, world"); writer.Flush(); Response.BinaryWrite(memory.ToArray()); } Response.AddHeader("Content-Disposition", "Attachment; filename=helloworld.txt"); Response.AddHeader("Content-Type", "application/octet-stream"); Response.End(); } } 

正如您在上面的示例中所看到的,我不仅不知道文件的物理位置,而且没有物理位置! 这是我刚写入内存然后将原始字节写入响应的内容,但WebClient.DownloadData()仍然可以下载所有相同的字节。 它并不关心字节来自何处。 希望这可以帮助。


附加信息:

一些进一步的背景信息进一步解释了上述原因。

浏览器的主要工作是发送HTTP请求并处理响应。 幸运的是,他们为我们处理了许多琐碎的工作。 显示一个简单的Web页面包括向服务器发送HTTP-GET并在响应主体中接收字节,将这些字节解码为文本,并解析该文本以呈现HTML网页。 它知道如此处理响应,因为它具有Text / HTML的Content-Type标头。 虽然这是大多数时候它所做的,但浏览器也可以处理其他MIME类型,如果Content-Type是text / plain,它将解码字节并只显示它们而不试图解析它。 文本/ XML通常允许您折叠和扩展XML节点等。再次,这完全取决于浏览器如何编程来处理该粒子MIME类型。

当您在浏览器中获得“另存为”对话框时,这只是浏览器使用Content-Disposition:Attachment标头处理响应的方式。 此标头告诉浏览器不要尝试呈现或显示内容,而是将其作为附件下载。

当您使用WebClient / HttpWebRequest类时,您实际上是在编写自己的微型浏览器,但是如何处理MIME类型/ HTTP标头的实现完全取决于您。 这可以允许您从Content-Disposition响应(或任何响应)中保存字节,而无需通过“打开”或“保存”对话框进行提示。