如何在selenium webdriver中处理下载文件?

时间:2014-05-07 06:56:22

标签: excel selenium hyperlink download webdriver

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

场景:对于给定的URL,我需要进入一个具有多个链接的网页。并且链接可以包含pdf或HTML文件。 我需要通过单击该链接来下载文件,并且应该通过在Excel工作表中输入链接参考进行管理。

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

请帮我找到任何网站,我可以在哪里下载文件

由于

5 个答案:

答案 0 :(得分:1)

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

如果您使用的是Firefox

使用firefox配置文件下载文件。这个配置文件跳过firefox的dialoge框。 在线: -

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

browser.download.folderList的值可以设置为0,1或2.设置为0时,Firefox会将通过浏览器下载的所有文件保存在用户桌面上。设置为1时,这些下载内容存储在“下载”文件夹中。设置为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");

希望它会对你有所帮助:)。

答案 1 :(得分:0)

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文件将自动下载到指定的文件夹中(无弹出窗口)

答案 2 :(得分:0)

尝试以下代码

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

答案 3 :(得分:0)

此问题曾在几次之前被问过,但我使用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.

答案 4 :(得分:0)

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

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

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