如何使用失败测试的方法名称获取失败测试的屏幕截图

问题描述 投票:1回答:2

听众如何解决它。给我一个更好的解决方案。我尝试使用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。但我希望输出名称作为调用屏幕截图

selenium selenium-webdriver
2个回答
0
投票

下面是一个返回调用方法名称的实用程序方法。

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

希望这能解决问题。


0
投票

你可以试试这个,

要改变第一个索引,

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

希望它会奏效。

© www.soinside.com 2019 - 2024. All rights reserved.