【问题标题】:WebDriver: PhantomJSDriver and save file dialogWebDriver:PhantomJSDriver 和保存文件对话框
【发布时间】:2013-08-19 14:11:03
【问题描述】:

研究 C# 的 PhantomJSDriver。我发现了一个问题:当我尝试单击调用文件保存对话框的元素时 - PhantomJSDriver 抛出异常:

Error Message => '点击成功但加载失败。状态:'失败''

由 Request => {"headers":{"Accept":"application/json, image/png","Connection":"关闭","Content-Length":"0","Content-Type":"application/json;charset=utf-8","Host":"localhost:34660" },"httpVersion":"1.1","method":"POST","post":"","url":"/click","urlParsed":{"anchor":"","query": "","file":"click","directory":"/","path":"/click","re​​lative":"/click","port":"","host":"" ,"password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/click","queryKey":{ },"chunks":["click"]},"urlOriginal":"/session/8839b140-08d7-11e3-9482-fda3a2d41a6f/element/%3Awdc%3A1376920756991/click"}

PhantomJSDriver 有什么选项可以处理文件保存吗?

C#代码:

var dr = new PhantomJSDriver();

dr.Navigate().GoToUrl("http://www.mywebapps.com/Default.aspx");

var link = dr.FindElementByXPath("//a[@href='Setup.exe']");

link.Click();

【问题讨论】:

  • 更新源代码

标签: c# .net selenium webdriver phantomjs


【解决方案1】:

PhantomJS 报告点击失败,因为它正在检查页面内容是否有效。在这种情况下,由于您单击的是要下载的 .exe 链接,它会报告单击失败。

如果您想下载文件,而不是点击链接,使用WebClient 直接从 URL 下载。

using (WebClient webClient= new WebClient())
{
    webClient.DownloadFile("http://yoururl/Setup.exe", "c:/temp/setup.exe");
}

你应该阅读这篇博文How to Download Files With Selenium And Why You Shouldn't,如果它没有说服你,它确实提供了一些关于如何完成文件下载的非常好的代码示例。

【讨论】:

  • 谢谢,但这段代码就像一个假人。让我们想象一下文件下载过程由 javascript 启动的场景,我们无法直接访问网络服务器上的文件,这意味着我们无法使用 WebClient 下载它。在这种情况下我们应该怎么做?
猜你喜欢
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多