有典型的解決方案捕獲屏幕截圖,而@Test
失敗,但有可能做到這一點@Before/After
Class/Method
失敗?TestNG是否有可能捕獲@BeforeMethod失敗的截圖?
爲什麼我需要那個? - 特別是對於@BeforeMethod
,我使用測試類的公共邏輯 - 登錄並轉到特定頁面。
有典型的解決方案捕獲屏幕截圖,而@Test
失敗,但有可能做到這一點@Before/After
Class/Method
失敗?TestNG是否有可能捕獲@BeforeMethod失敗的截圖?
爲什麼我需要那個? - 特別是對於@BeforeMethod
,我使用測試類的公共邏輯 - 登錄並轉到特定頁面。
你可能要嘗試並實現你的情況WebDriverEventListener
您可能感興趣的方法onException
這將允許你這樣做對代碼執行過程中發生的每exeception smthn,也這將是必要使用EventFiringWebDriver
添加監聽器
使用相同的值,不確定它是否與webdriver相關。這應該是testng相關的解決方案。 – user3535807
目前停在覆蓋TestNG的ITestListener
- onTestSkipped
方法。缺點是截圖正在採取每個跳過@Test
方法。在下面的代碼中應該重構,但這是一個很好的開始。注意:你應該包括這個自定義監聽到你的testng.xml
@Override
public void onTestSkipped(ITestResult result) {
if(result != null){
String failedTestScreenshotFolder = Paths.get("").toAbsolutePath().toString() + "path/skippedScreenshots/";
WebDriver webDriver = ((TestBase)result.getInstance()).webDriver;
File scrFile = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
try {
String className = result.getTestClass().getName();
FileUtils.copyFile(scrFile, new File(failedTestScreenshotFolder + className.substring(className.lastIndexOf(".") + 1) + "." + result.getMethod().getMethodName() + ".jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
你試圖使用'Itestresult'這樣,'@AfterMethod \t公共無效takeScreenShotOnFailure(ITestResult的TestResult)拋出IOException異常{ \t \t如果( testResult.getStatus()== ITestResult.FAILURE){ \t \t \t System.out.println(testResult.getStatus()); \t \t \t文件scrFile =((TakesScreenshot)驅動程序).getScreenshotAs(OutputType.FILE); \t \t \t FileUtils.copyFile(scrFile,new File(「D:\\ testScreenShot.jpg」)); \t} \t}'您可以對@BeforeMethod – user1207289