【发布时间】:2016-07-11 14:44:34
【问题描述】:
我有两个@after 标签,@close-browser 和@screenshot。所以,现在当我将这两个标签用于功能文件时,它首先执行@close-browser,它在执行@screenshot 的 after 方法时失败。 有没有办法让黄瓜先在方法之后运行@screenshot?
【问题讨论】:
标签: java junit cucumber cucumber-jvm cucumber-junit
我有两个@after 标签,@close-browser 和@screenshot。所以,现在当我将这两个标签用于功能文件时,它首先执行@close-browser,它在执行@screenshot 的 after 方法时失败。 有没有办法让黄瓜先在方法之后运行@screenshot?
【问题讨论】:
标签: java junit cucumber cucumber-jvm cucumber-junit
您可以将“顺序”参数传递给@Before 和@After 以控制执行顺序:
@Before( order = 5 )
public void foo() {}
@After( order = 500 )
public void bar() {}
Before hooks 按升序运行(最低序号在前),而 After hooks 按降序运行(最高序号在前)。
【讨论】:
应使用@After 注释方法之一截取屏幕截图。像这样:
@After
public void finish(Scenario scenario) {
try {
byte[] screenshot =
helper.getWebDriver().getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
} catch (WebDriverException somePlatformsDontSupportScreenshots) {
System.err.println(somePlatformsDontSupportScreenshots.getMessage());
}
finally {
helper.getWebDriver().close();
}
}
【讨论】:
@After 注释方法之一中的 cookie,您仍然可以重复使用相同的会话