WebDriver以无头模式保存问题

时间:2018-12-05 14:34:24

标签: java selenium webdriver selenium-chromedriver headless-browser

我在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下载文件吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这对我有用:

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)