Как включить загрузку файла в Headless Chrome в последней версии драйвера Chrome: 2.40

Мой код отлично работает, когда установлено setHeadless(false), но не в безголовом режиме. Я искал во многих местах, и ничего не помогло мне. Эта проблема зарегистрирована в Github, но все еще находится в состоянии "открыто". Я использую Java Selenium.

Примечание. Я испробовал весь возможный код, который уже опубликован в https://stackoverflow.com. Сделал снимки экрана и также проверил поведение, он движется и щелкает. ссылка на значок экспорта, но файл не загружается.

Мой код ниже:

System.setProperty("webdriver.chrome.driver",
            "./Driver/chromedriver.exe");

ChromeOptions options = new ChromeOptions();

options.setHeadless(true);

options.addArguments("--disable-gpu");

options.addArguments("window-size=1600x900");

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
chromePrefs.put("browser.setDownloadBehavior", "allow");
options.setExperimentalOption("prefs", chromePrefs);  

driver = new ChromeDriver(options);     
driver.get(Url);
driver.manage().window().maximize();

WebElement export = driver.findElement(By
        .xpath("//*[@id='cssmenu1']/li[1]"));

try {
    Actions act = new Actions(driver);
    act.moveToElement(export).build().perform(); 
    act.click(export).build().perform();

} catch (Exception e) {
    // TODO: handle exception
    System.out.println(e);
}

person shankar    schedule 18.06.2018    source источник
comment
какая у вас версия chromedriver и версия google chrome. я не понял, что вы имели в виду под Chrome версии 40   -  person Prany    schedule 18.06.2018
comment
Chrome версии 67.0.3396.87 ChromeDriver версии 2.40   -  person shankar    schedule 18.06.2018
comment
Есть у кого решения??   -  person shankar    schedule 25.06.2018
comment
это может помочь - stackoverflow.com /вопросы/42471151/   -  person Prany    schedule 25.06.2018
comment
Привет, Прани, я попробовал все шаги, упомянутые в этой ссылке. Все еще не работает.   -  person shankar    schedule 26.06.2018


Ответы (1)


Я смог заставить это работать на меня после создания экземпляра драйвера.

    var paramList = new Dictionary<string, object>();
    paramList.Add("behavior", "allow");
    paramList.Add("downloadPath", GlobalConfig.DownloadsDirectoryPath);
    driver.ExecuteChromeCommand("Page.setDownloadBehavior", paramList);

Использование следующих пакетов:
Selenium.Chrome.WebDriver v2.35.0
Selenium.WebDriver v3.10.0
Appium.WebDriver v4.0.0.1-beta
Chrome Version 72.0.3626.121

person Oliver Scholle    schedule 14.03.2019
comment
Что такое эквивалент Java? - person st0ve; 16.01.2020