Java 如何在最新的Chrome驱动程序版本:2.40中启用Headless Chrome中的下载文件

Java 如何在最新的Chrome驱动程序版本:2.40中启用Headless Chrome中的下载文件,java,selenium,google-chrome-headless,Java,Selenium,Google Chrome Headless,设置setHeadless(false)时,我的代码工作正常,但不是在headless模式下。 我找了很多地方,什么都帮不了我,但仍处于“开放”状态。我正在使用JavaSelenium 注意:我尝试了所有可能的代码,这些代码已经发布在 拍摄了截图并检查了行为,它正在移动并单击导出图标链接,但文件没有下载 我的代码如下: System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver.exe");

设置
setHeadless(false)
时,我的代码工作正常,但不是在headless模式下。 我找了很多地方,什么都帮不了我,但仍处于“开放”状态。我正在使用JavaSelenium

注意:我尝试了所有可能的代码,这些代码已经发布在 拍摄了截图并检查了行为,它正在移动并单击导出图标链接,但文件没有下载

我的代码如下:

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);
}
System.setProperty(“webdriver.chrome.driver”,
“/Driver/chromedriver.exe”);
ChromeOptions选项=新的ChromeOptions();
选项。设置无头(真);
options.addArguments(“--disable gpu”);
options.addArguments(“窗口大小=1600x900”);
HashMap chromePrefs=新HashMap();
chromePrefs.put(“profile.default\u content\u settings.popups”,0);
chromePrefs.put(“download.default\u目录”,downloadFilepath);
chromePrefs.put(“browser.setDownloadBehavior”,“allow”);
选项。设置实验选项(“prefs”,chromePrefs);
驱动程序=新的色度驱动程序(可选);
获取(Url);
driver.manage().window().maximize();
WebElement导出=driver.findElement(按
.xpath(“/*[@id='cssmenu1']/li[1]”);
试一试{
动作动作=新动作(驱动);
act.moveToElement(export.build().perform();
单击(导出).build().perform();
}捕获(例外e){
//TODO:处理异常
系统输出打印ln(e);
}

在驱动程序实例化后,我能够让它为我工作。

    var paramList = new Dictionary<string, object>();
    paramList.Add("behavior", "allow");
    paramList.Add("downloadPath", GlobalConfig.DownloadsDirectoryPath);
    driver.ExecuteChromeCommand("Page.setDownloadBehavior", paramList);
var paramList=newdictionary();
添加(“行为”、“允许”);
paramList.Add(“downloadPath”,GlobalConfig.DownloadsDirectoryPath);
driver.executechrome命令(“Page.setDownloadBehavior”,paramList);
使用这些软件包:
Selenium.Chrome.WebDriver v2.35.0
Selenium.WebDriver v3.10.0
Appium.WebDriver v4.0.0.1-beta版

Chrome版本72.0.3626.121

你的chromedriver版本和google Chrome版本是什么。我不明白你所说的Chrome版本40Chrome版本67.0.3396.87 ChromeDriver版本2.40是什么意思有人有解决方案吗?这可能会有帮助-嗨,普拉尼,我尝试了链接中提到的所有步骤。仍然不起作用..Java等效物是什么?