Forum Discussion

Marcel_Holle's avatar
Marcel_Holle
Copper Contributor
Apr 27, 2020
Solved

Set download directory via WebDriver

I'm using Edge v81.0.416.64 to run Selenium Tests using the matching Edge WebDriver, however it does not seem to be possible to set a custom download directory using the "download.default_directory" user profile preference, used in Chrome. I know that there is the option to change the download directory using group policies (https://docs.microsoft.com/en-us/DeployEdge/microsoft-edge-policies#downloaddirectory), but this is no viable option for web tests.

 

Am I missing something/is there another way? Is this something planned for the future?

 

EDIT: Setting the "download.default_directory" user profile preference works in Edge v79.0.309.65.

  • johnjansen's avatar
    johnjansen
    Apr 29, 2020

    Marcel_Holle thanks for the code, that helps so much. The issue is because you are using ChromeDriver() which is not supported on Edge 81 and newer. We wrote a pretty cool tool to enable this to work more seamlessly here: https://github.com/microsoft/edge-selenium-tools

     

    Basically, it is fully backward compatible with the old Edge browser as well as the new Edge browser to try to help people save time writing new tests.

     

    -John

4 Replies

  • Marcel_Holle we made some changes to MSEdgeDriver in v 81 that seem to be impacting your tests. Can you share the code sample for how you create the driver() object?

     

    -John

    • Marcel_Holle's avatar
      Marcel_Holle
      Copper Contributor

      Hi johnjansen ,

       

      we're using Selenium 3.141.0.0 & ChromeDriver classes:
       

       

      var edgeOptions = new EdgeOptions
                        {
                            BinaryLocation = BrowserBinaryPath
                        };
      
      DisableSpecCompliance (edgeOptions); // force "w3c" capability to false
      AdjustBrowserNameCapability (edgeOptions); // Set DriverOptions.BrowserName to "MicrosoftEdge" instead of "Chrome"
      
      edgeOptions.AddArgument ($"user-data-dir={userDirectory}");
      
      edgeOptions.AddArgument ("no-first-run");
      edgeOptions.AddArgument ("force-device-scale-factor=1");
      
      edgeOptions.AddUserProfilePreference ("safebrowsing.enabled", true);
      edgeOptions.AddUserProfilePreference ("download.default_directory", DownloadDirectory);
      
      var driverService = ChromeDriverService.CreateDefaultService (driverDirectory, driverExecutable);
      driverService.EnableVerboseLogging = false;
      driverService.LogPath = logPath;
      
      var driver = new ChromeDriver (driverService, _extendedEdgeOptions, commandTimeout);
      driver.Manage().Timeouts().AsynchronousJavaScript = asyncJavaScriptTimeout;

       

      • johnjansen's avatar
        johnjansen
        Icon for Microsoft rankMicrosoft

        Marcel_Holle thanks for the code, that helps so much. The issue is because you are using ChromeDriver() which is not supported on Edge 81 and newer. We wrote a pretty cool tool to enable this to work more seamlessly here: https://github.com/microsoft/edge-selenium-tools

         

        Basically, it is fully backward compatible with the old Edge browser as well as the new Edge browser to try to help people save time writing new tests.

         

        -John

Resources