使用ChromeDriver和无头模式下载Java,Selenium中的文件
由于我仍然不清楚如何使用ChromeDriver中的–headless模式下载文件 – selenium [Java],请在此处添加如何执行此操作的示例,我尝试这样做(文件下载工作正常 – 无头选项):
ChromeOptions lChromeOptions = new ChromeOptions(); HashMap lChromePrefs = new HashMap(); lChromePrefs.put("profile.default_content_settings.popups", 0); lChromePrefs.put("download.default_directory", _PATH_TO_DOWNLOAD_DIR); lChromePrefs.put("browser.set_download_behavior", "{ behavior: 'allow' , downloadPath: '"+_PATH_TO_DOWNLOAD_DIR+"'}"); lChromeOptions.addArguments("--headless"); lChromeOptions.addArguments("--disable-gpu"); lChromeOptions.setExperimentalOption("prefs", lChromePrefs); WebDriver lWebDriver = new ChromeDriver(lChromeOptions);
据我所知,自从Chrome v60 +设置Browser.setDownloadBehaviour(true, _DIRECTORY)
,无法以无头模式下载文件,但我无法找到ChromeDriver是否已经支持它的信息,或者只是我使用错误的chrome首选项作为参数
ChromeDriver版本:2.34 Selenium + WebDriver版本:3.8.1
在Java中使用如下:
System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver"); ChromeOptions options = new ChromeOptions(); options.addArguments("--test-type"); options.addArguments("--headless"); options.addArguments("--disable-extensions"); //to disable browser extension popup ChromeDriverService driverService = ChromeDriverService.createDefaultService(); ChromeDriver driver = new ChromeDriver(driverService, options); Map commandParams = new HashMap<>(); commandParams.put("cmd", "Page.setDownloadBehavior"); Map params = new HashMap<>(); params.put("behavior", "allow"); params.put("downloadPath", "//home//vaibhav//Desktop"); commandParams.put("params", params); ObjectMapper objectMapper = new ObjectMapper(); HttpClient httpClient = HttpClientBuilder.create().build(); String command = objectMapper.writeValueAsString(commandParams); String u = driverService.getUrl().toString() + "/session/" + driver.getSessionId() + "/chromium/send_command"; HttpPost request = new HttpPost(u); request.addHeader("content-type", "application/json"); request.setEntity(new StringEntity(command)); httpClient.execute(request); driver.get("http://www.seleniumhq.org/download/"); driver.findElement(By.linkText("32 bit Windows IE")).click();
我尝试下面的代码,但它没有工作,我使用geckodriver(firefox驱动程序)而不是在无头模式下下载文件工作良好
- 如何使用Java在Selenium WebDriver中禁用Chrome插件
- Java Selenium Chrome驱动程序 – 禁用图像加载
- 错误E:使用HtmlUnit执行javascript
- 获取无法使用java / selenium将元素集中在chrome和edge中
- 在Selenium的inconginto模式下运行chrome浏览器
- 使用Selenium的Chrome驱动程序:“找不到适合RemoteWebDriver的构造函数”
- org.openqa.selenium.WebDriverException:chrome无法访问 – 尝试启动新会话时
- Chrome与Java SSL Server握手时关闭连接
- Chrome删除了Java支持