2013-08-19 74 views
1

调查PhantomJSDriver for c#。我发现一个问题:当我试图单击它调用文件保存对话框中的元素 - PhantomJSDriver抛出一个异常:WebDriver:PhantomJSDriver和保存文件对话框

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

由Request => {“headers”:{“Accept”:“application/json, image/png”,“Connection”:“Close”,“Content-Length” “0”, “内容类型”: “应用/ JSON;字符集= UTF-8”, “主机”: “本地主机:34660”}, “httpVersion”: “1.1”, “方法”: “POST”,”邮报 “:””, “URL”: “/点击”, “urlParsed”:{ “锚”: “”, “查询”: “”, “文件”: “点击”, “目录”: “/”, “路径”: “/点击”, “相对”: “/点击”, “口”: “”, “主人”: “”, “密码”: “”, “用户”: “”, “用户信息”: “”, “权威”: “”, “协议”: “”, “源”: “/点击”, “queryKey”:{}, “块”:[ “点击”]} “urlOriginal”:“/会议/ 8839b140-08d7-11e3-9482-fda3a2d41a6f /元/%3Awdc%3A1376920756991 /单击“}

是否有任何选项PhantomJSDriver如何处理文件保存?

C#代码:

变种DR =新PhantomJSDriver();

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

变种链路= dr.FindElementByXPath( “//一个[@ HREF = '的Setup.exe']”);

link.Click();

+0

告诉我们的源代码 –

+0

???? –

+0

任何更新更新代码 –

回答

0

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,这要是不谈论它,你出来,它确实提供了有关如何完成文件下载了一些非常好的代码样本。

+3

谢谢,但这段代码就像一个虚拟的。让我们来想象一下由JavaScript启动文件下载过程的场景,并且我们没有直接访问web服务器上的文件,这意味着我们不能使用WebClient来下载它。在这种情况下我们应该做什么? –