2013-11-01 5 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 I создание драйвера без параметров. Теперь он работает.

+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"); 
Смежные вопросы