如何使用ReportNG获取selenium webdriver中失败测试的屏幕截图

时间:2016-02-09 08:55:07

标签: java selenium selenium-webdriver

如果有人知道如何使用reportNG获取selenium webdriver中失败的测试/方法的屏幕截图,请提供帮助。

如果您提供代码,那么它有用或提供一些解决此问题的想法。

提前致谢。

4 个答案:

答案 0 :(得分:0)

是的,有可能。

WebDriver firfoxDriver = new FirefoxDriver();
firfoxDriver.get("https://stackoverflow.com/");
File file = ((TakesScreenshot)firfoxDriver).getScreenshotAs(OutputType.FILE);
// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(file, new File("E:\\Data\\ss.png"));

答案 1 :(得分:0)

或者你可以使用它:

andrey:~$ lsof -i tcp:54022
STS     447 andrey   36u  IPv6 0xf4ba94cfea1e25e5      0t0  TCP localhost:49424->localhost:54022 (CLOSE_WAIT)

答案 2 :(得分:0)

嗯,这取决于你的框架,在方法失败后控制的位置。

假设在你的情况下它将进入catch异常块然后在catch块中复制该代码。

File file = ((TakesScreenshot)firfoxDriver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file, new File("YOUR PATH"+Filename+.JPG));

答案 3 :(得分:0)

您可以使用Itestlistener中的testng进行屏幕截图。 testng具有内置功能,通过它可以在失败时进行屏幕截图。

只需创建一个单独的listerner类并粘贴以下代码:

public class listeners implements ITestListener{

//This "Base " is the main class where you can pass the result of test case and write the //code for screenshot  
//I cam creating an object so I can access the method that I created for screenshot in this base class.  
//I am also getting the result name so I can identify which test case it got failed


Base b = new Base();
public void onTestFailure(ITestResult result) { 
    try {
        //Getting the result name by result.getName() method         
        b.getScreenshot( result.getName());
        System.out.println("The Failed test is=="+result.getName());
    }   
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();  
    }  
}   
}  

我在基类中创建了此getScreenshot方法,并传递了结果名称

public class Base {

public WebDriver InitializeDr() throws IOException {  
    //Creating the method to take screenshot in the Base class    
    public void getScreenshot(String result) throws IOException
    {  
        File dest=new File("D:\\Work\\KT\\Scr Shot\\"+result+"test.png");  
        File src=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);  
        FileUtils.copyFile(src, dest);  
    }  
}  
}