Как получить скриншоты безголового ChromeDriver с Selenium в Java / Linux? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть 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;
}

Но это тоже не сработало.Я нашел этот вопрос , но так как я уже получил, как получить некоторые скриншоты из браузера 'headfull', я думаю, что это тоже не мой случай.

Я использую ChromeDriver из эта ссылка (2.42) (самая последняя на тот момент, когда был задан этот вопрос) и эта зависимость:

<dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.9.1</version>
</dependency>
...