2017-08-14 73 views
0

我有一个需要在ChromeDriver中下载音频文件的项目。此处的行为与常规Chrome不同,如果我访问该网址,它会自动开始下载文件。如果我在ChromeDriver中手动执行相同的操作,它将不会下载该文件。使用ChromeDriver下载文件

我已经尝试了铬选项/偏好的不同配置。我也发现了旧版Chrome的选项,不再工作。

这里是更好的资源,我发现之一,但它仍然没有工作,甚至与他们更新的博客文章 https://dkage.wordpress.com/2012/03/10/mid-air-trick-make-selenium-download-files/

当我试图使用他的解决办法,我突然chromedriver崩溃本身在非镀铬方式。它只是消失。不是像您通常所期望的那样出现“出错”页面。我最终与Java无法找到我的会话,导致它停止存在。

有没有人成功通过Chrome中的Selenium webdriver下载文件?如果我需要使用其他浏览器,我可以。

我目前使用Chrome Canary。

+0

所以你正在''下载文件通过自动Chrome浏览器中的Selenium webdriver?你能分享一个示例网站和你的研究吗? – DebanjanB

+0

我正在尝试下载音频文件并执行语音识别。后半部分正在工作。我遇到的问题是在页面被访问时下载文件。当我回家时,我可以提供一个链接 – Kristoff

+0

通过普通的I/O来下载文件不是更好吗? –

回答

0

我有同样的问题。一种可行的解决方案是使用另一个库,它可以在浏览器之外运行。我发现这些计算器后discussiong这个问题:

https://sqa.stackexchange.com/questions/2197/how-to-download-a-file-using-seleniums-webdriver

它包含了我这篇文章至极给你一些sugestions。 https://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

  1. 窗口自动化

第一种方法闻起来像“蛮力”:搜索网的解决问题的时候,你很容易落得建议,以控制本机带有一些像AutoIt这样的窗口自动化软件。意味着您必须准备AutoIt,以便它等待任何浏览器下载对话框,Selenium放弃的位置,控制窗口,保存文件以及关闭窗口。之后,硒可以像往常一样继续。

这可能最终会奏效,但我发现它是一种技术性的矫枉过正。事实证明,这个问题有一个更简单的解决方案。

  • 更改的浏览器的默认行为
  • 第二种可能性是改变浏览器的默认行为。例如,当点击一个PDF文件时,浏览器不应该打开一个对话框,并询问用户如何处理该文件,而是将它保存在一个没有意见和问题的预定义目录中。为此,必须手动启动文件下载,并将其保存到磁盘并从现在开始将其标记为这些文件类型的默认行为。

    嗯,那可以工作。您“只”必须确保所有开发人员,哈德森实例等共享相同的浏览器配置文件。根据不同文件类型的数量,这可能是一些手动工作。

  • 直接下载
  • 退一步说,为什么我们要下载与硒的文件摆在首位?在没有Selenium的情况下下载文件,而是使用wget下载会不会更酷?你会在你走的时候解决第二个问题。看起来好主意,因为wget不仅适用于Linux,而且适用于Windows。

    问题解决了吗?不太清楚:那些不能自由访问的文件呢?什么,当我第一次需要用Selenium创建一个状态来访问生成的文件?该解决方案似乎可以用于公共文件,但不适用于所有情况。

    +0

    为了通过浏览器手动完成,我需要检查元素,并从代码中获取音频文件的URL位置。 我可以选择在浏览器中播放音频,并录制它,但这似乎是我考虑过度的解决方案 – Kristoff