您的位置:首页 > 大数据 > 人工智能

Webdriver take screen shot when case failed use TestNG

2014-08-07 17:05 483 查看
Is there a good way to capture screenshots when running tests in parallel on the method level?
In order to run tests in parallel, each individual test needs a unique driver instance. So, at any given time you have x number of driver instances running. When it comes time to capture a screenshot, how do you determine which driver to use?

If you create a base test class with access to the driver, then that driver will always be the correct driver

The following will achieve this;

All test classes must extend a simple base test class;

public asbtract baseTestCase() {

private WebDriver driver;

public WebDriver getDriver() {
return driver;
}

@BeforeMethod
public void createDriver() {
Webdriver driver=XXXXDriver();
}

@AfterMethod
public void tearDownDriver() {
if (driver != null)
{
try
{
driver.quit();
}
catch (WebDriverException e) {
System.out.println("***** CAUGHT EXCEPTION IN DRIVER TEARDOWN *****");
System.out.println(e);
}

}
}


In your listener, you need to access the base class;

public class ScreenshotListener extends TestListenerAdapter {

@Override
public void onTestFailure(ITestResult result)
{
Object currentClass = result.getInstance();
WebDriver webDriver = ((BaseTest) currentClass).getDriver();

if (webDriver != null)
{

File f = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);

//etc.
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐