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