java - 如何使用 GeckoDriver Firefox 和 Selenium 下载文件?

标签 java firefox selenium-webdriver geckodriver firefox-profile

我使用此代码下载文件,但它不起作用

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);

它给了我错误

Error message

当我删除

'Profile'

形成此FirefoxDriver driver = new FirefoxDriver(profile); 然后代码运行成功,但下载文件窗口没有关闭,文件也没有下载。

我使用机器人代替这个

Robot object=new Robot();
object.keyPress(KeyEvent.VK_DOWN);
object.keyRelease(KeyEvent.VK_DOWN);         
object.keyPress(KeyEvent.VK_ENTER);
object.keyRelease(KeyEvent.VK_ENTER);

它工作正常。但是为什么我上面的代码不起作用?

最佳答案

要下载文件,请单击文本为要下载的测试文件链接,您需要:

  • 创建一个新的 FirefoxProfile() 并设置所需的首选项。
  • 使用 FirefoxOptions() 实例设置配置文件
  • 您可以使用以下解决方案:

    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();
    

关于java - 如何使用 GeckoDriver Firefox 和 Selenium 下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55590738/

相关文章:

java - 垃圾收集器不会自行释放内存

java - 如何使用 Java Jsch 运行 Docker 特定命令

CSS 大纲无法在 Firefox 中正确呈现

javascript - 最大高度/最大宽度在 Firefox 和 IE 中不起作用

css - Firefox CSS 没有动画但 Chrome 有

node.js - 从 cmd 运行 Protractor 与 npm run script 的结果差异

selenium - 使用selenium java提取dataLayer对象

java - 在 Java 中加载和缓存图像的最佳方式是什么?

java - 使用 Volley 获取成功请求的 HTTP 状态码

java - 使用 Selenium WebDriver Java - css 按钮上传照片