Невозможно установить путь загрузки по умолчанию с помощью Selenium ChromeDriver SerenityBDD - PullRequest
0 голосов
/ 18 октября 2019

Проблема:

  1. ChromeDriver не загружает файл по «нужному» пути

  2. ChromeDriver не может загрузить какой-либо файл в »режим без головы.

POM

        <java.version>1.8</java.version>
        <serenity.version>1.8.20</serenity.version>
        <serenity.jbehave.version>1.35.0</serenity.jbehave.version>
        <chromedriver-dep.version>77.0.3865.40</chromedriver-dep.version>

SerenityBDD Chrome Preference (serenity.properties):

chrome_preferences.profile.default_content_settings.popups=0 
chrome_preferences.download.default_directory=./files/ 
chrome_preferences.download.prompt_for_download=false 
chrome_preferences.download.directory_upgrade=true 
chrome_preferences.pdfjs.disabled=true

Другие вещи, которые я пробовал, ручная настройка ChromeOptions.

@Step
public CouponSearchActions waitABitAndClickOnExport() {
    pageRefreshAndCheckCouponStatus();
    if (couponViewPage.getCouponStatusIsCreated().isVisible()) {
        setExperimentalChromeOption();
        couponViewPage.getExportCouponButton().clickAndWait();
    }
    return this;
}

private ChromeOptions setExperimentalChromeOption() {
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
    chromePrefs.put("profile.default_content_settings.popups", 0);
    chromePrefs.put("download.default_directory", System.getProperty("user.dir"));

    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("prefs", chromePrefs);
    return new ChromeOptions();
}

1 Ответ

0 голосов
/ 23 октября 2019

Попробуйте обновить Chrome и chromedriver.

Q1 ChromeDriver не может загрузить какой-либо файл в режиме "без головы".

Ответ: Используйте chromedriver services

WebDriver driver;
ChromeDriverService driverService = ChromeDriverService.createDefaultService();
try {
    driver = new ChromeDriver(driverService, options);
}catch(Throwable t) {
    APP_LOGS.error(t.getMessage());
    t.printStackTrace();
}
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);


/**** DOWNLOAD HACK ON HEADLESS BROWSERS *****/
Map<String, Object> commandParams = new HashMap<>();
commandParams.put("cmd", "Page.setDownloadBehavior");
Map<String, String> params = new HashMap<>();
params.put("behavior", "allow");
params.put("downloadPath", downloadFilepath);
commandParams.put("params", params);
ObjectMapper objectMapper = new ObjectMapper();
HttpClient httpClient = HttpClientBuilder.create().build();
try {
    String command = objectMapper.writeValueAsString(commandParams);
    String u = driverService.getUrl().toString() + "/session/" + ((RemoteWebDriver)driver).getSessionId() + "/chromium/send_command";
    APP_LOGS.debug(u);
    HttpPost request = new HttpPost(u);
    request.addHeader("content-type", "application/json");
    request.setEntity(new StringEntity(command));
    httpClient.execute(request);
}catch (Exception e) {
    APP_LOGS.debug(e.getMessage());
}

Примечание:

Обновите Chrome / ChromeDriver до последней версии.

Эта проблема решена в ChromeDriver 77.0.3865.40 (2019-08-20). https://chromedriver.storage.googleapis.com/77.0.3865.40/notes.txt

Решена проблема 2454: Безголовый режим не сохраняет загрузки файлов [Pri-2]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...