2013-11-01 110 views
3

我使用硒來測試系統。 我必須下載一個文本文件。爲了直接下載它,我創建了一個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(); 

我找不到爲什麼對話框仍然打開。 有什麼想法?

在此先感謝。

+0

我不知道這可能是瀏覽器的版本而定。或者類似的東西?也許一個較老的與Firefox的? – Coffee

+0

您的瀏覽器是否打開過? – sircapsalot

+3

我猜它是你設定的最後一個偏好。你確定'text/plain'是下載的MIME類型嗎? –

回答

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

我WASS創建不帶參數的驅動程序。現在它正在工作。

+0

檢查這個帖子http://qaautomationworld.blogspot.in/2014/02/file-downlaoding-using-selenium.html – Sravan

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

您可以下載所有的文件(例如:.xls的,.CSV,.PDF)

我也面臨着我的應用程序相同的問題:

我在Java

使用機器人解決方案

下面的代碼我寫下載所有文件

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