Настройка параметров Selenium FirefoxProfile не соответствует - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь настроить профиль Firefox (Windows, 61.0) для использования в Selenium WebDriver (3.13.0) с Java, чтобы Firefox автоматически загружал файлы, чтобы я мог обойти диалог загрузки.

Вот код:

FirefoxOptions options = new FirefoxOptions();
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList",2);
profile.setPreference("browser.download.useDownloadDir",true);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/x-download");
return options.setProfile(profile);

browser.download.folderList и browser.helperApps.neverAsk.saveToDisk оба влияют на настройки, которые вы ожидаете от них, но в случае browser.download.useDownloadDir это не влияет на фактическую настройку (то есть она остается ложной). Скорее, он создает новый, похожий (?) Параметр с именем services.sync.prefs.sync.browser.download.useDownloadDir.

enter image description here

Любая идея, в чем проблема, и как я могу установить для параметра useDownloadDir значение true?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Мне удалось решить эту проблему, установив эти префы во время выполнения, как описано в этом посте:

Обновление профиля загрузки профиля Selenium Firefox после создания веб-драйвера

Вероятно, моя проблема вызвана настройками предприятия на моем компьютере, что может заставить префы по умолчанию определенным образом каждый раз открывать новое окно независимо от того, что передается в браузер через Selenium. Например, я не смог отредактировать browser.download.useDownloadDir, browser.download.dir и browser.download.folderList (среди прочих). Мои типы пантомимы были установлены правильно, и проблема все еще возникала на моем конце.

0 голосов
/ 09 июля 2018

ОПЦИЯ 1: Укажите тип mime загружаемых файлов. Это пример для файлов XLS / XLSX:

FirefoxProfile selenium_profile = new FirefoxProfile();
selenium_profile.setPreference("browser.download.folderList",2);
selenium_profile.setPreference("browser.download.dir", "C:\\Users\\pburgr\\Desktop\\BP_usr_tmp\\");
selenium_profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
options.setProfile(selenium_profile);

ВАРИАНТ 2: Использовать существующий профиль Firefox. С существующим профилем "selenium_profile" я использую это:

@BeforeClass
    public static void setUpClass() {
        FirefoxOptions options = new FirefoxOptions();
        ProfilesIni allProfiles = new ProfilesIni();         
        FirefoxProfile selenium_profile = allProfiles.getProfile("selenium_profile");
        options.setProfile(selenium_profile);
        options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
        System.setProperty("webdriver.gecko.driver", "C:\\Users\\pburgr\\Desktop\\geckodriver-v0.20.0-win64\\geckodriver.exe");
        driver = new FirefoxDriver(options);
        driver.manage().window().maximize();
        }

Используйте менеджер профилей Firefox (Win + R: firefox -p) для создания нового профиля. Запустите Firefox в новом профиле и настройте необходимые настройки, включая автоматическую загрузку для определенных типов файлов.

...