如何使用Selenium WebDriver处理文件下载弹出窗口?

4

我已经编写了一个下载Excel文件的代码,它可以工作,但是一旦弹出窗口出现,它就会停止。自动下载文件并存储在指定位置,但现在这并没有发生。请有人帮忙找到解决这个问题的方法。

FirefoxProfile profile = new FirefoxProfile();
WebDriver driver = new FirefoxDriver(profile); 


profile.setPreference("browser.helperapps.neverAsk.saveToDisk" , "text/csv"); 
profile.setPreference("browser.download.folderList", 2); 
profile.setPreference("browser.download.dir","e:\\SampleExcel"); 

driver.get("http://url");
driver.findElement(By.name("email")).sendKeys("abc@gmail.com");
driver.findElement(By.name("pass")).sendKeys("abc");
driver.findElement(By.id("edit-submit")).click();
driver.findElement(By.id("toolbar-link-admin-config")).click();
driver.findElement(By.linkText("Reports")).click();
driver.findElement(By.xpath("//input[@value='5']")).click();
driver.findElement(By.id("edit-submit")).click();

你尝试过切换到弹出窗口或警报或窗口并接受它吗? - nitin chawda
在这个文件下载弹出窗口中不需要切换到警报。 - user2323844
3个回答

5

尝试以下代码

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


该链接提供了完整的MIME类型列表。

谢谢HemaSundar,它很好用,甚至在Firefox Quantum上也可以使用! - Krzysztof Walczewski

4

尝试使用以下代码:

FirefoxProfile profile = new FirefoxProfile();
WebDriver driver = new FirefoxDriver(profile); 

profile.setPreference("browser.helperApps.neverAsk.saveToDisk" , "application/octet-stream;application/csv;text/csv;application/vnd.ms-excel;"); 
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","e:\\SampleExcel"); 

1
它没有发生,结果和之前一样,我必须强制点击确定按钮才能下载。 - user2323844
这不是一个CSV文件,而是一个扩展名为.XLS的Excel文件。 - user2323844

0
请将偏好设置中不提示下载对话框的text替换为application,如下所示:
profile.setPreference("browser.helperapps.neverAsk.saveToDisk" , "application/csv");

仅作确认,下载的文件是带有 csv 扩展名对吗?如果不是这样的话,我们将必须对以上代码进行更改。


它是一个Excel文件,不是CSV文件。 - user2323844
它的扩展名是什么?.xl、.xls、.xlt还是其他什么? - Alpha
你能回答我上面的评论吗? - Alpha
然后尝试使用profile.setPreference("browser.helperapps.neverAsk.saveToDisk","application/excel");profile.setPreference("browser.helperapps.neverAsk.saveToDisk","application/vnd.ms-excel");profile.setPreference("browser.helperapps.neverAsk.saveToDisk","application/x-excel");profile.setPreference("browser.helperapps.neverAsk.saveToDisk","application/x-msexcel");如果这对您有用,请告诉我,我会更新我的答案。 - Alpha
我会尝试并让您知道。 - user2323844

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