在 Firefox 中处理下载确认 popup/dialog
Handle download confirmation popup/dialog in Firefox
我有一个上传、压缩和下载pdf文件的测试。除下载部分外,一切正常。当我们点击下载时,我无法了解如何在 Firefox 中处理确认 popup/Save 或打开文件对话框。我尝试修改 firefox 配置,但仍然无法解决。有人可以帮忙吗?
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.dir", "C:\Users\Sahil\Downloads\");
profile.setPreference("browser.helperApps.neverAsk.openFile","application/pdf");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
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);
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);
, 0 profile.setPreference("pdfjs.disabled", true);
WebDriver driver=new FirefoxDriver(profile);
driver.get("http://www.ilovepdf.com/compress_pdf");
driver.findElement(By.id("pickfiles")).click();
Runtime.getRuntime().exec("C:\Users\Sahil\Documents\Au\Second.exe");
WebDriverWait wait=new WebDriverWait(driver, 100);
WebElement element1=wait.until(ExpectedConditions.elementToBeClickable(By.id("uploadfiles")));
element1.click();
WebElement element=wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a#download")));
element.click();
您有很多不需要的偏好。你只需要这个:
// Create a firefoxprofile for firefox specific settings
FirefoxProfile profile = new FirefoxProfile();
// Set the downloads folder
profile.setPreference("browser.download.dir", path/to/folder);
// Download files to the downloads folder
profile.setPreference("browser.download.folderList", 2);
// Don't show downloads window when download starts
profile.setPreference("browser.download.manager.showWhenStarting", False);
// Prevent file download dialog to be shown for certain MIME-types
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
如果这不起作用,您应该确保指定了正确的 MIME 类型。您可以在浏览器中监控网络并手动下载文件。应使用特定的内容类型发出 GET 请求。确保已将内容类型添加到您的 browser.helperApps.neverAsk.saveToDisk
首选项中。
编辑!
我刚刚检查了您指定的网站的 MIME 类型。您正在尝试自动保存 application/pdf
。但是,您正在下载 MIME 类型 application/octet-stream
的文件。
你需要改变这个:
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
为此:
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
如何查找 MIME 类型
在点击下载按钮之前,请打开您的 Firefox 控制台并转到网络选项卡。
现在,如果您点击下载按钮,您将看到已发出 GET 请求。如果打开此请求,您可以看到响应的内容类型。这是您的 MIME 类型。
我有一个上传、压缩和下载pdf文件的测试。除下载部分外,一切正常。当我们点击下载时,我无法了解如何在 Firefox 中处理确认 popup/Save 或打开文件对话框。我尝试修改 firefox 配置,但仍然无法解决。有人可以帮忙吗?
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.dir", "C:\Users\Sahil\Downloads\");
profile.setPreference("browser.helperApps.neverAsk.openFile","application/pdf");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
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);
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);
, 0 profile.setPreference("pdfjs.disabled", true);
WebDriver driver=new FirefoxDriver(profile);
driver.get("http://www.ilovepdf.com/compress_pdf");
driver.findElement(By.id("pickfiles")).click();
Runtime.getRuntime().exec("C:\Users\Sahil\Documents\Au\Second.exe");
WebDriverWait wait=new WebDriverWait(driver, 100);
WebElement element1=wait.until(ExpectedConditions.elementToBeClickable(By.id("uploadfiles")));
element1.click();
WebElement element=wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a#download")));
element.click();
您有很多不需要的偏好。你只需要这个:
// Create a firefoxprofile for firefox specific settings
FirefoxProfile profile = new FirefoxProfile();
// Set the downloads folder
profile.setPreference("browser.download.dir", path/to/folder);
// Download files to the downloads folder
profile.setPreference("browser.download.folderList", 2);
// Don't show downloads window when download starts
profile.setPreference("browser.download.manager.showWhenStarting", False);
// Prevent file download dialog to be shown for certain MIME-types
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
如果这不起作用,您应该确保指定了正确的 MIME 类型。您可以在浏览器中监控网络并手动下载文件。应使用特定的内容类型发出 GET 请求。确保已将内容类型添加到您的 browser.helperApps.neverAsk.saveToDisk
首选项中。
编辑!
我刚刚检查了您指定的网站的 MIME 类型。您正在尝试自动保存 application/pdf
。但是,您正在下载 MIME 类型 application/octet-stream
的文件。
你需要改变这个:
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
为此:
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
如何查找 MIME 类型
在点击下载按钮之前,请打开您的 Firefox 控制台并转到网络选项卡。
现在,如果您点击下载按钮,您将看到已发出 GET 请求。如果打开此请求,您可以看到响应的内容类型。这是您的 MIME 类型。