使用selenium下载文件

时间:2013-11-01 14:05:33

标签: java firefox selenium selenium-webdriver

我正在使用selenium来测试系统。 我必须下载一个文本文件。为了直接下载,我创建了一个Firefox配置文件,它应该避免Save / cancel对话框...但是对话框仍然会出现。

我的代码如下:

FirefoxProfile fxProfile = new FirefoxProfile();
fxProfile.setPreference("browser.download.folderList",2);
fxProfile.setPreference("browser.download.manager.showWhenStarting",false);
fxProfile.setPreference("browser.download.dir","c:\\tmp");
fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","text/plain");
driver.findElement(By.id("link-download")).click();

我无法找到对话框仍然打开的原因。 有什么想法吗?

提前致谢。

3 个答案:

答案 0 :(得分:5)

我明白了。

创建驱动程序时,必须将Firefox配置文件作为参数传递,如下所示:

FirefoxProfile fxProfile = new FirefoxProfile();

    fxProfile.setPreference("browser.download.folderList", 2);
    fxProfile.setPreference("browser.download.manager.showWhenStarting", false);
    fxProfile.setPreference("browser.download.dir","c:\\tmp");
    fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
    fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");

    setDriver(TestBench.createDriver(new FirefoxDriver(fxProfile)));

我在没有参数的情况下创建驱动程序。现在它正在发挥作用。

答案 1 :(得分:3)

在我的情况下,我需要另一个偏好来使其正常工作,启用Javascript也很有趣。

File downloadDir = new File(DOWNLOAD_PATH);
FirefoxProfile fProfile = new FirefoxProfile();
fProfile.setAcceptUntrustedCertificates(true);
fProfile.setPreference("browser.download.dir", downloadDir.getAbsolutePath());
fProfile.setPreference("browser.download.folderList", 2);
fProfile.setPreference("browser.download.manager.showWhenStarting", false);
fProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
fProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/plain");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setJavascriptEnabled(true);
dc.setCapability(FirefoxDriver.PROFILE, fProfile);
driver = new FirefoxDriver(dc);

答案 2 :(得分:-1)

您可以下载所有文件(例如:.xls,.csv,.pdf)

我的申请中也面临同样的问题:

我在java中使用Robot获得了解决方案

以下代码我写下载所有文件

                    Thread.sleep(1000L);
                    //create robot object
                    Robot robot = new Robot();
                    Thread.sleep(1000L);
                    //Click Down Arrow Key to select "Save File" Radio Button
                    robot.keyPress(KeyEvent.VK_DOWN);
                    Thread.sleep(1000L);
                    // Click 3 times Tab to take focus on "OK" Button
                    robot.keyPress(KeyEvent.VK_TAB);
                    Thread.sleep(1000L);
                    robot.keyPress(KeyEvent.VK_TAB);
                    Thread.sleep(1000L);
                    robot.keyPress(KeyEvent.VK_TAB);
                    Thread.sleep(1000L);
                    //Click "Enter" Button to download file
                    robot.keyPress(KeyEvent.VK_ENTER);
                    Thread.sleep(5000L);
                    System.out.println("Robot work Complete");