3

我正在使用 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();

我找不到对话框仍然打开的原因。任何想法?

提前致谢。

4

3 回答 3

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

我正在创建没有参数的驱动程序。现在它正在工作。

于 2013-11-02T19:27:02.163 回答
3

就我而言,我需要另一个 Preference 才能使其正常工作,启用 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);
于 2014-09-19T06:45:34.367 回答
-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");
于 2014-11-14T12:56:20.133 回答