如何使用 GeckoDriver Firefox 和 Selenium 下载文件?
How to download files using GeckoDriver Firefox and Selenium?
我使用此代码下载文件,但它不起作用
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir","D:\WebDriverDownloads");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;");
profile.setPreference( "browser.download.manager.showWhenStarting",false );
profile.setPreference( "pdfjs.disabled",true );
FirefoxDriver driver = new FirefoxDriver(profile); //Shows error on this line
driver.get("http://toolsqa.com/automation-practice-form/");
driver.findElement(By.linkText("Test File to Download")).click();
Thread.sleep(5000);
它给我错误
当我删除
'Profile'
形成这个FirefoxDriver driver = new FirefoxDriver(profile);
然后代码 运行 成功,但下载文件 window 没有关闭,文件也没有下载。
我用机器人代替这个
Robot object=new Robot();
object.keyPress(KeyEvent.VK_DOWN);
object.keyRelease(KeyEvent.VK_DOWN);
object.keyPress(KeyEvent.VK_ENTER);
object.keyRelease(KeyEvent.VK_ENTER);
及其工作 fine.But 为什么我上面的代码不工作?
要下载文件,请单击 link 文本为 要下载的测试文件,您需要:
- 创建一个新的 FirefoxProfile() 并设置所需的首选项。
- 使用 FirefoxOptions() 的实例设置 profile.
您可以使用以下解决方案:
System.setProperty("webdriver.gecko.driver", "C:\Utility\BrowserDrivers\geckodriver.exe");
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", "C:\Utility\Downloads");
profile.setPreference("browser.download.folderList",2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.helperApps.neverAsk.openFile","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.useWindow", false);
profile.setPreference("browser.download.manager.focusWhenStarting", false);
profile.setPreference("browser.download.manager.showAlertOnComplete", false);
profile.setPreference("browser.download.manager.closeWhenDone", true);
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);
driver.get("http://toolsqa.com/automation-practice-form/");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Test File to Download"))).click();
我使用此代码下载文件,但它不起作用
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir","D:\WebDriverDownloads");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;");
profile.setPreference( "browser.download.manager.showWhenStarting",false );
profile.setPreference( "pdfjs.disabled",true );
FirefoxDriver driver = new FirefoxDriver(profile); //Shows error on this line
driver.get("http://toolsqa.com/automation-practice-form/");
driver.findElement(By.linkText("Test File to Download")).click();
Thread.sleep(5000);
它给我错误
当我删除
'Profile'
形成这个FirefoxDriver driver = new FirefoxDriver(profile);
然后代码 运行 成功,但下载文件 window 没有关闭,文件也没有下载。
我用机器人代替这个
Robot object=new Robot();
object.keyPress(KeyEvent.VK_DOWN);
object.keyRelease(KeyEvent.VK_DOWN);
object.keyPress(KeyEvent.VK_ENTER);
object.keyRelease(KeyEvent.VK_ENTER);
及其工作 fine.But 为什么我上面的代码不工作?
要下载文件,请单击 link 文本为 要下载的测试文件,您需要:
- 创建一个新的 FirefoxProfile() 并设置所需的首选项。
- 使用 FirefoxOptions() 的实例设置 profile.
您可以使用以下解决方案:
System.setProperty("webdriver.gecko.driver", "C:\Utility\BrowserDrivers\geckodriver.exe"); FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("browser.download.dir", "C:\Utility\Downloads"); profile.setPreference("browser.download.folderList",2); profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); profile.setPreference("browser.download.manager.showWhenStarting", false); profile.setPreference("browser.helperApps.neverAsk.openFile","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); profile.setPreference("browser.helperApps.alwaysAsk.force", false); profile.setPreference("browser.download.manager.useWindow", false); profile.setPreference("browser.download.manager.focusWhenStarting", false); profile.setPreference("browser.download.manager.showAlertOnComplete", false); profile.setPreference("browser.download.manager.closeWhenDone", true); FirefoxOptions options = new FirefoxOptions(); options.setProfile(profile); WebDriver driver = new FirefoxDriver(options); driver.get("http://toolsqa.com/automation-practice-form/"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Test File to Download"))).click();