Веб-драйвер Selenium для Chrome не сохраняет скриншоты по указанному пути - PullRequest
0 голосов
/ 26 октября 2018
public void afterTestMethod(TestContext testContext) throws Exception {
    if (testContext.getTestException() == null) {
        return;
    }
    File screenshot = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
    String testName = testContext.getTestClass().getSimpleName();
    String methodName = testContext.getTestMethod().getName();
    Files.copy(screenshot.toPath(),
    Paths.get("C:\\Users\\user\\git\\ufe-360\\UFE-TESTS\\screenshots\test.png", testName + "_" + methodName + "_" + screenshot.getName())); 
    } 
}

У меня есть код выше в моем проекте, чтобы сделать скриншоты после выполнения теста.Я подозреваю, что что-то отсутствует в моем коде.При каждом тестировании скриншоты не сохраняются по указанному пути.У меня нет ошибок.Каждый тест выполняется правильно, но без скриншота.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

В начале вашего метода у вас есть код, который не позволит сделать снимок экрана, когда в тесте нет ошибок / исключений.Итак, вы говорите: «Каждый тест выполняется правильно, но без скриншота».и это вполне ожидаемо.из вопроса:

if (testContext.getTestException() == null) {
    return;
}

из вашего дополнительного комментария

if (ITestResult.FAILURE == result.getStatus()) {

Ваша логика выглядит так: если тест не пройден, сделайте скриншот в момент сбоя.Попробуйте изменить код вашего теста, чтобы он не сработал, и вы должны увидеть скриншоты по указанному пути.Если вы хотите реализовать какую-то другую логику, например, «делать снимок экрана на каждом этапе тестирования», исправьте вопрос, так как у него будет другое решение.

Если вы просто удалите логику if, ваш код создастскриншот после последнего шага вашего теста.(но я не уверен, что такой скриншот очень полезен, так как обычно скриншоты используются, чтобы помочь проанализировать «что пошло не так», и ваша логика прекрасно это охватывает)

0 голосов
/ 26 октября 2018
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.OutputType;


        private static void takeScreenshot() throws IOException, InterruptedException {
            // TODO Auto-generated method stub

            System.setProperty("webdriver.chrome.driver", "chromedriver");              
            driver = new ChromeDriver();

            driver.get("https://www.google.com/");
            Thread.sleep(2);

            TakesScreenshot scrShot =((TakesScreenshot)driver);
            File SrcFile=scrShot.getScreenshotAs(OutputType.FILE);
            File DestFile=new File("/home/XXXX/Desktop/test.png");
            FileUtils.copyFile(SrcFile, DestFile);      

        }   

Приведенный выше код откроет "google.com", он сделает снимок экрана и сохранит его на рабочем столе, как я указал путь к рабочему столу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...