Сохранять скриншоты каждого исполнения в разные папки в селене - PullRequest
0 голосов
/ 30 августа 2018

Для каждого выполнения скриншоты следует сохранять в разные папки с датой и временем. Пробовал с приведенным ниже кодом, но он не работает должным образом. Он создает папку на основе минут, а не выполнения. Пожалуйста, помогите .. Заранее спасибо.

public static String screenShot(WebDriver driver,
        String screenShotName, String testName) {
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
    SimpleDateFormat formater1 = new SimpleDateFormat("dd_MM_yyyy_hh_mm");
    try {
File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        File targetFile = new File("iWealthHKTestAutomation/resources/Screenshots_"+formater1.format(calendar.getTime())+"/"+ screenShotName+formater1.format(calendar.getTime()) + ".png");
        FileUtils.copyFile(screenshotFile, targetFile);

        return screenShotName;
    } catch (Exception e) {
        System.out.println("An exception occured while taking screenshot " + e.getCause());
        return null;
    }

}

public String getTestClassName(String testName) {
    String[] reqTestClassname = testName.split("\\.");
    int i = reqTestClassname.length - 1;
    System.out.println("Required Test Name : " + reqTestClassname[i]);
    return reqTestClassname[i];
}

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы должны добавить тестовое имя в папку, так как оно будет отслеживать выполнение

Если вы используете метку времени, она также изменится для того же теста

public static String screenShot(WebDriver driver,String screenShotName, String 
      testName) {
        try {
        File screenshotFile = ((TakesScreenshot) 
        driver).getScreenshotAs(OutputType.FILE);
        File targetFile = 
            new File("iWealthHKTestAutomation/resources/Screenshots_"
                + testName /* pass testname param here like this*/
                + "/"
                + screenShotName
                + String.valueOf(new 
                 SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date())) 
                + ".png");
        FileUtils.copyFile(screenshotFile, targetFile);
        return screenShotName;
    } catch (Exception e) {
        System.out.println("An exception occured while taking screenshot " + e.getCause());
        return null;
    }

}
0 голосов
/ 30 августа 2018

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

public static String screenShot(WebDriver driver,
    String screenShotName, String testName, Date startTime) {...

и используйте startTime вместо объекта Calendar.

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