У меня есть это Java-приложение, которое в Ubuntu с Selenium и ChromeDriver удаляет некоторые веб-сайты и извлекает некоторые данные. Я хотел автоматизировать ведение журнала ошибок, включая создание снимка экрана при возникновении определенных исключений (все уже реализовано и работает). В основном здесь я создаю экземпляр своего драйвера:
System.setProperty("webdriver.chrome.driver", System.getProperty("user.home") + driversPath + "chromedriver");
ChromeOptions options = new ChromeOptions();
if(headless)
options.addArguments("--headless");
options.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
options.setCapability(CapabilityType.TAKES_SCREENSHOT, true);
this.driver = new ChromeDriver(options);
this.driver.manage().window().setSize(new Dimension(1366, 768));
И вот как я создаю скриншоты из него:
File srcFile = ((TakesScreenshot) this.driver).getScreenshotAs(OutputType.FILE);
try {
// creates file at System.getProperty("user.dir")
FileUtils.copyFile(srcFile, new File(path));
//catch and so on
С Boolean headless = false;
это работает именно так, как я хотел, и я прекрасно вижу свои скриншоты. Теперь я хотел бы протестировать некоторые VPS, и мне нужно было сначала использовать его без головы локально.
С Boolean headless = true;
я заметил, что моя автоматизация работала так, как предполагалось по сгенерированному журналу, но когда я намеренно отключился от сети, чтобы выдать некоторые ошибки, я заметил, что все скриншоты были пустыми изображениями. Я посмотрел здесь, но так как при отключенном безголовом я получил скриншоты, это ответ не имеет значения для меня.
Я попытался использовать setHeadless(boolean headless)
из ChromeOptions
с таким кодом:
public ChromeOptions setHeadless(boolean headless) {
args.remove("--headless");
if (headless) {
args.add("--headless");
args.add("--disable-gpu");
}
return this;
}
Но это тоже не сработало. Я нашел этот вопрос, но так как я уже получил, как получить некоторые скриншоты из «головного» браузера, я думаю, что это тоже не мой случай.
Я использую ChromeDriver из этой ссылки (2.42)( самый последний на момент создания этого вопроса) и эта зависимость:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.9.1</version>
</dependency>