【问题标题】:Change default download location on Edge chromium更改 Edge chromium 上的默认下载位置
【发布时间】:2020-06-29 13:13:54
【问题描述】:

我想问一下是否有人尝试使用 selenium 3.X 更改 Microsoft Edge Chromium 驱动程序的默认下载位置。 在 Chrome 浏览器上,我们可以使用这样的东西

 HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
    chromePrefs.put("download.default_directory", savePAth);
    chromePrefs.put("prompt_for_download", false);
    options.setExperimentalOption("prefs", chromePrefs);

信息: Microsoft Edge 浏览器版本:80.0.361.66(正式版)(64 位)

提前致谢

【问题讨论】:

  • 您在为 MS Edge Chromium 浏览器运行上述代码时是否遇到任何错误?您使用的是哪个版本的 Microsoft Web 驱动程序以及您使用的是哪个版本的 MS Edge 浏览器?确保您使用的是 MS Edge 浏览器支持的正确版本的 Web 驱动程序。参考:developer.microsoft.com/en-us/microsoft-edge/tools/webdriver
  • 以上代码是在Chrome上设置下载路径。不幸的是,Microsoft Edge Chromium 驱动程序不支持“options.setExperimentalOption("prefs", chromePrefs);"。

标签: selenium-webdriver microsoft-edge


【解决方案1】:

尝试使用以下设置(Java 绑定):

public WebDriver newDriver() {

    try {

        EnvironmentVariables vars = SystemEnvironmentVariables.createEnvironmentVariables();

        String version = vars.getProperty("webdriver.edgedriver.version");
        WebDriverManager.edgedriver().version(version).setup();

        EdgeOptions options = new EdgeOptions();

        EdgeDriverService edgeDriverService = EdgeDriverService.createDefaultService();

        EdgeDriver edgeDriver = new EdgeDriver(edgeDriverService, options);

        final String downloadPath = ${your path}

        //************* Enable downloading files / set path *******************
        Map<String, Object> commandParams = new HashMap<>();
        commandParams.put("cmd", "Page.setDownloadBehavior");
        Map<String, String> params = new HashMap<>();
        params.put("behavior", "allow");
        params.put("downloadPath", downloadPath);
        commandParams.put("params", params);
        ObjectMapper objectMapper = new ObjectMapper();
        HttpClient httpClient = HttpClientBuilder.create().build();
        String command = objectMapper.writeValueAsString(commandParams);
        String u = edgeDriverService.getUrl().toString() + "/session/" + edgeDriver.getSessionId() + "/chromium/send_command";
        HttpPost request = new HttpPost(u);
        request.addHeader("content-type", "application/json");
        request.setEntity(new StringEntity(command));
        httpClient.execute(request);

        return edgeDriver;

    } catch (Exception e) {
        throw new Error(e);
    }
}

我能够使用这个 sn-p 将文件下载到所需的路径。来源here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2021-09-15
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多