如果有人知道如何使用reportNG获取selenium webdriver中失败的测试/方法的屏幕截图,请提供帮助。
如果您提供代码,那么它有用或提供一些解决此问题的想法。
提前致谢。
答案 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);
}
}
}