как получить скриншот для тестов на неудачу с именем метода теста на сбой - PullRequest
0 голосов
/ 05 сентября 2018

С помощью слушателей, как мы можем решить эту проблему. Дайте мне лучшее решение. Я попытался использовать со Listners, но он не дает имя метода теста на сбой, он дает имя скриншота с именем текущего метода. Например, если тест не удалось в одном классе, я хочу, чтобы только имя метода класса. но это дает метод выполнения в качестве имени снимка экрана

public class Invoke {
    public static WebDriver driver;

    public static void invoking() throws Exception {
        System.setProperty("webdriver.chrome.driver",
            "E:\\AK\\Selenium files\\chromedriver_win32 (1)\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("facebook.com/");
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.findElement(By.xpath("akdhd")).click();
    }
} 

public class Excecution {
    @Test public static void m() throws Exception { 
        Invoke.invoking(); 
        String val=ExcelDynamic.r("C:\\Users\\PC\\Desktop\\facebook.xlsx", "Sheet1", 1, 1); 
        System.out.println(val);
    }

Этот код в другом классе

    public static void screen(String Filepath) throws Exception {
        TakesScreenshot ts = ((TakesScreenshot) driver);
        File fi = ts.getScreenshotAs(OutputType.FILE);
        String img = Thread.currentThread().getStackTrace()[2].getMethodName() + ".jpg";
        FileUtils.copyFile(fi, new File(Filepath + img));
    }
}

Я вызываю этот метод в классе выполнения, поэтому он печатает снимок экрана с именем m. Но я хочу, чтобы выходное имя использовалось для снимка экрана

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы можете попробовать По этому,

Чтобы изменить с первым индексом,

String img = Thread.currentThread().getStackTrace()[1].getMethodName() + ".jpg";

Надеюсь, это сработает.

0 голосов
/ 05 сентября 2018

Ниже приведен служебный метод, который возвращает имя вызывающего метода.

public static String get_calling_method_name() {
    return Thread.currentThread().getStackTrace()[2].getMethodName();
}

Надеюсь, что это решит проблему.

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