使用ChromeDriver下载文件

时间:2017-08-14 11:23:26

标签: java google-chrome selenium download

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

我尝试过不同的Chrome选项/偏好配置。我还发现了适用于旧版Chrome的选项,不再适用了。

这是我找到的更好的资源之一,但它仍然无法正常工作,即使更新的博客文章也是如此 https://dkage.wordpress.com/2012/03/10/mid-air-trick-make-selenium-download-files/

当我尝试使用他的解决方案时,我的chromedriver突然以非铬合金方式崩溃。它只是消失了。不是"出了点问题"像你这样的页面通常会期待。我最终得到Java无法找到我的Session,导致它停止存在。

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

我目前正在使用Chrome Canary。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。一个可能有效的解决方案是使用另一个能够在浏览器外部运行的库。我发现这些stackoverflow后讨论了这个问题:

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

它包含这个博文,它会给你一些消息。 https://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

  
      
  1. 窗口自动化
  2.         

    第一种方法闻起来像“蛮力”:在搜索网络寻找问题的解决方案时,您很容易得到建议,用AutoIt等一些窗口自动化软件控制本机窗口。意味着您必须准备AutoIt,等待任何浏览器下载对话框,Selenium放弃的点,控制窗口,保存文件和关闭窗口。之后,Selenium可以照常继续。

         

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

         
        
    1. 更改浏览器默认行为
    2.         

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

           

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

           
          
      1. 直接下载
      2.         

        退一步,我们为什么要首先使用Selenium下载文件?在没有Selenium的情况下下载文件,而不是用wget下载文件会不会更酷?你可以解决第二个问题。似乎是一个好主意,因为wget不仅适用于Linux,也适用于Windows。

             

        问题解决了吗?不完全:文件怎么样,不能自由访问?什么,当我第一次需要用Selenium创建一些状态才能访问生成的文件?对于公共文件,该解决方案似乎没问题,但并不适用于所有情况。