WebDriver:PhantomJSDriver并保存文件对话框

时间:2013-08-19 14:11:03

标签: c# .net selenium webdriver phantomjs

调查PhantomJSDriver以获取c#。我发现了一个问题:当我尝试单击调用文件保存对话框的元素时 - PhantomJSDriver会抛出异常:

  

错误讯息=> '点击成功,但加载失败。状态:'失败''

     由Request =>引起的

{ “头”:{ “接受”:“应用/ JSON,   图像/ PNG”, “连接”: “关闭”, “内容长度”: “0”, “内容类型”: “应用/ JSON;字符集= UTF-8”, “主机”: “本地主机:34660” }, “httpVersion”: “1.1”, “方法”: “POST”, “邮报”: “”, “URL”: “/点击”, “urlParsed”:{ “锚”: “”, “查询”: “”, “文件”: “点击”, “目录”: “/”, “路径”: “/点击”, “相对”: “/点击”, “口”: “”, “主人”: “” “密码”: “”, “用户”: “”, “用户信息”: “”, “权威”: “”, “协议”: “”, “源”: “/点击”, “queryKey”:{ }, “块”:[ “点击”]} “urlOriginal”: “/会话/ 8839b140-08d7-11e3-9482-fda3a2d41a6f /元件/%3Awdc%3A1376920756991 /点击”}

有没有选项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();

1 个答案:

答案 0 :(得分:0)

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

如果您要下载文件,而不是点击该链接,请使用WebClient直接从网址下载。

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,如果它没有提及你,它会提供一些关于如何完成文件下载的非常好的代码示例。