我正在研究一种方法,在方案中完成每个步骤定义后,我可以在Scala Cucumber的验收测试套件中实现屏幕捕获方法。
我已经实现了一个方法,如果其中一个自动化测试失败,则通过调用after hooks类中的方法来获取网页的屏幕截图。这确实可以正常工作,但只有在整个场景完成后才会捕获网页。
我不确定是否有类似钩子之前和之后的东西可以应用于步骤而不是场景。
Hooks.scala
@After
def tearDown(result: Scenario){
if (result.isFailed) {
ifCurrentDriverTakesSnapshot {
takesSnapshot =>
Snapshotter.takeErrorSnapshot(takesSnapshot, result)
}
}
Snapshotter.Scala
def takeErrorSnapshot(takesScreenshot: TakesScreenshot, result: Scenario)
= {
try {
val screenshot = takesScreenshot.getScreenshotAs(OutputType.BYTES)
result.embed(screenshot, "image/png")
}
catch {
case e: WebDriverException =>
e.printStackTrace(System.err)
}
}
我希望能够在每个新页面打开后或每个步骤定义后调用的类或方法中执行此操作。我可以正确处理屏幕截图的步骤定义,但我希望以更好的方式做,因为我有100个测试场景,所以最好避免在每个步骤定义之间添加一个步骤,因为它们已经完成在以下链接中。
如果有人能就这个问题分享一些亮点,我会非常感激,因为我很难在这个问题上找到很多。
感谢!!!