使用Selenium WebDriver设置Firefox个人资料无法下载文件

3

我想使用selenium来处理文件下载。为此,我使用了以下代码来设置firefox配置文件:

FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("browser.download.folderList", 2);
    profile.setPreference("browser.download.manager.showWhenStarting", false);
    profile.setPreference("browser.download.dir", downloadPath);
    profile.setPreference("browser.helperApps.neverAsk.openFile",
            "text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml");
    profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
   "text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml");
    profile.setPreference("browser.helperApps.alwaysAsk.force", false);
    profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
    profile.setPreference("browser.download.manager.focusWhenStarting", false);
    profile.setPreference("browser.download.manager.useWindow", false);
    profile.setPreference("browser.download.manager.showAlertOnComplete", false);
    profile.setPreference("browser.download.manager.closeWhenDone", false);

通过我的用户界面(UI),我下载了两个文件。 第一个文件,我成功地下载了它,弹出窗口如下所示:

在此输入图片描述

但是我无法下载第二个文件。对于第二个文件,弹出窗口如下所示: 在此输入图片描述

我不知道为什么我的Firefox档案设置不能处理第二个文件的下载。

请给予建议。非常感谢您的帮助!!


看起来第一个文件是 Microsoft Office Excel 97-2003 工作表格式,而第二个文件是 Microsoft Office ExcelWorksheet(更新版本),因此它找不到打开应用程序。尝试通过单击保存并尝试打开来保存它。 - Naruto
@Naruto 我相信仅使用Selenium可能真的很难做到(甚至不可能)(点击保存)。 - drets
需要使用Selenium吗?还是我可以提供另一种方式? - George Moralis
2
@Sammi,你能否给我们明确说明一下,点击一个下载按钮是否会弹出两个下载实例,还是需要依次点击两次才能获得这两个弹窗?代码看起来好像通过点击一个下载链接会出现两个弹窗。 - Programmer
1个回答

0

使用Selenide,你可以尝试像这样做,然后将其与你正在做的进行比较:

@Test
    public void userCanDownloadFile() throws FileNotFoundException, IOException
    {
     // Folder to store downloads and screenshots to.
     reportsFolder = "./src/test/profiles/chrome/downloads/";

     open("http://chromedriver.storage.googleapis.com/index.html?path=2.16/");

     // Download files
     $("a[href='/2.16/chromedriver_win32.zip']").download();
        $(By.xpath(".//a[@href='/2.16/chromedriver_mac32.zip']")).download();

        // Count files in folder, assert 2
        int downloadsCount = new File(reportsFolder+"2.16").listFiles().length;
        assertEquals("Should be 2 files but founded " + downloadsCount,  
              downloadsCount, 2); 

        // Clean after test
        FileUtils.deleteDirectory(new File(reportsFolder+"2.16"));
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接