我在Mac上的项目中使用Java + ChromeDriver。
这是一些代码:

System.setProperty("webdriver.chrome.driver", TestConfig.driverURL());
ChromeOptions options = new ChromeOptions();
options.addArguments("headless").addArguments("window-size=2560x1440");
String downloadFilePath = "some file path";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("download.default_directory", downloadFilePath);
options.setExperimentalOption("prefs", chromePrefs);
driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);


当我评论此行时:

options.addArguments("headless").addArguments("window-size=2560x1440");


一切正常,我下载了一些文件,但Chrome无法在无头模式下工作。

如果此行未注释,则不会下载文件。

有人可以告诉我如何在无头模式下使用ChromeDriwer下载文件吗?

谢谢。

最佳答案

这是对我有用的东西:

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
prefs = {'download.default_directory' : out_path}
options.add_experimental_option('prefs', prefs)

download_path = './output/'

driver = webdriver.Chrome('./chromedriver', chrome_options=options)

driver.command_executor._commands["send_command"] = ("POST",
'/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow',
'downloadPath': download_path}}
command_result = driver.execute("send_command", params)

08-03 22:16