【问题标题】:How to handle downloading a file in selenium webdriver?如何处理在 selenium webdriver 中下载文件?
【发布时间】:2014-06-24 00:26:09
【问题描述】:

我是 selenium 的新手,我被分配了一个任务来实现下面提到的场景。

场景:对于给定的 URL,我需要进入一个有多个链接的网页。并且链接可能有 pdf 或 HTML 文件。 我只需要通过单击该链接下载文件,它应该通过在 Excel 表中输入链接引用来管理。

所以我的任务有两个挑战:
1) 如何处理 XL 表输入的值作为输入。
2) 如何使用 selenium 下载 pdf 文件

请帮我在任何可以下载文件的网站上查找

谢谢

【问题讨论】:

    标签: excel selenium hyperlink download webdriver


    【解决方案1】:

    试试下面的代码

    FirefoxProfile profile = new FirefoxProfile();
        String path = "D:\\Downloads_sel";
        profile.setPreference("browser.download.folderList", 2);
        profile.setPreference("browser.download.dir", path);
        profile.setPreference("browser.download.alertOnEXEOpen", false);
        profile.setPreference("browser.helperApps.neverAsksaveToDisk", "application/x-msexcel,application/excel,application/x-excel,application/excel,application/x-excel,application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel");
        profile.setPreference("browser.download.manager.showWhenStarting", false);
        profile.setPreference("browser.download.manager.focusWhenStarting", false);
        profile.setPreference("browser.helperApps.alwaysAsk.force", false);
        profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
        profile.setPreference("browser.download.manager.closeWhenDone", false);
        profile.setPreference("browser.download.manager.showAlertOnComplete", false);
        profile.setPreference("browser.download.manager.useWindow", false);
        profile.setPreference("browser.download.manager.showWhenStarting", false);
        profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
        profile.setPreference("pdfjs.disabled", true);
    
        WebDriver driver = new FirefoxDriver(profile);
    

    如需完整的 MIME 类型列表,请点击链接:http://qaautomationworld.blogspot.in/2014/02/file-downlaoding-using-selenium.html

    【讨论】:

    • 好答案,除了有一个错字 - 第四个参数应该是 browser.helperApps.neverAsk.saveToDisk
    【解决方案2】:

    Apache POI。 http://www.toolsqa.com/selenium-webdriver/data-driven-testing-excel-poi/

    如果您使用的是 Firefox

    使用 Firefox 配置文件下载您的文件。此配置文件跳过了 Firefox 的对话框。 在线:-

       pro.setPreference("browser.downLoad.folderList", 0);
    

    browser.download.folderList 的值可以设置为 0、1 或 2。设置为 0 时,Firefox 会将通过浏览器下载的所有文件保存在用户桌面上。设置为 1 时,这些下载内容存储在 Downloads 文件夹中。设置为 2 时,将再次使用为最近下载指定的位置。

    您需要实现的 Firefox 配置文件代码:-

            FirefoxProfile pro=new FirefoxProfile();
            pro.setPreference("browser.downLoad.folderList", 0);
            pro.setPreference("browser.helperApps.neverAsk.saveToDisk", "Applications/zip");
            WebDriver driver=new FirefoxDriver(pro);
            driver.get("http://selenium-release.storage.googleapis.com/2.47/selenium-java-2.47.1.zip");
    

    希望对你有帮助:)

    【讨论】:

      【解决方案3】:

      1a) 你应该试试 JExcelApi:http://jexcelapi.sourceforge.net/

      1b) 另一个想法是使用 Apache POI。你可以找到例子:http://poi.apache.org/spreadsheet/how-to.html#sxssf

      2) 要下载 PDF 文件,您可以试试这个 Selenium 代码(用 Java 编写):

      FirefoxProfile profile = new FirefoxProfile();
      WebDriver driver = new FirefoxDriver(profile); 
      
      profile.setPreference("browser.helperapps.neverAsk.saveToDisk" , "application/octet-stream;application/pdf"); 
      profile.setPreference("browser.helperApps.alwaysAsk.force", false);
      profile.setPreference("browser.download.manager.showWhenStarting",false);
      profile.setPreference("browser.download.folderList", 2); 
      profile.setPreference("browser.download.dir","C:\\savedPDFs");
      

      当您点击链接(可能有 pdf 文件)时,pdf 文件将自动下载到给定文件夹中(不弹出)

      【讨论】:

        【解决方案4】:

        这个问题已经问过几次了,但我使用MetaModel Apache api 来读取和写入 Excel。它允许我使用类似 SQL 的语法查询 Excel。我在我的 GitHub 帐户中做了一个示例项目,如果你能找到的话。

        此外,对于使用 Selenium 测试下载文件,我只需这样做:

           1.  Use selenium to get the file download hyperlink.
           2.  Use Apache HttpUtils to download the file.  Don't use the browser to do it.
        

        【讨论】:

          【解决方案5】:

          经过一些本地调查,如何在没有任何“另存为”弹出窗口的情况下在 Firefox 中下载 pdf 文件,我在 Firefox 配置文件中找到了所需的最低首选项:

          profile.setPreference("pdfjs.disabled", true);
          profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream;application/pdf");
          

          当然你可以有一些额外的偏好。 它适用于 Firefox 45-46 版本。

          【讨论】:

            猜你喜欢
            • 2014-01-27
            • 2017-02-18
            • 1970-01-01
            • 2018-11-17
            • 2012-06-03
            • 1970-01-01
            • 2016-04-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多