设置Selenium FirefoxProfile设置不一致

时间:2018-07-05 19:09:04

标签: java selenium selenium-webdriver selenium-firefoxdriver

我正在尝试使用Java在Selenium WebDriver(3.13.0)中设置一个Firefox(Windows,61.0)配置文件,以便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.folderListbrowser.helperApps.neverAsk.saveToDisk都会影响您希望它们影响的设置,但是在browser.download.useDownloadDir的情况下,它不会影响实际设置(即,它仍然为false )。相反,它将创建一个名为services.sync.prefs.sync.browser.download.useDownloadDir的新的类似(?)设置。

enter image description here

您知道这里存在什么问题,如何将useDownloadDir设置设置为true

2 个答案:

答案 0 :(得分:0)

选项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并设置所需的自定义设置,包括针对特定文件类型的自动下载。

答案 1 :(得分:0)

如本文所述,我可以通过在运行时设置这些首选项来解决此问题:

Selenium firefox profile update download directory after creating webdriver

我的问题很可能是由机器上的企业设置引起的,这可能会导致每次打开新窗口时,无论通过Selenium传递到浏览器的内容是什么,强制prefs都以默认方式进行默认设置。例如,我无法编辑browser.download.useDownloadDir,browser.download.dir和browser.download.folderList等。我的mime类型设置正确,问题仍然存在。