如果我的子步骤文件已经扩展了一类,则如何创建MasterStep / basestep



如果我的子步骤文件已经扩展了类,如何创建MasterStep/basestep?

我的一个步骤文件之一的示例代码:

public class LoginSteps extends DriverFactory {
WebDriver driver = getDriver();
@Given("^User navigates to the "([^"]*)" website$")
public void user_navigates_to_the_website(String url) throws Throwable {
    basePage.loadUrl(url);
}
@And("^User entered the "([^"]*)" username$")
public void user_entered_the_username(String username) throws Throwable {
    loginPage.setUsername(username);
}
@And("^User entered the "([^"]*)" password$")
public void user_entered_the_password(String password) throws Throwable {
    l

我需要在下面使用以下标签/代码,但是我不想在每个步骤类/文件中重复,并且在尝试在我的驱动程序中添加cucumber标签时,我不允许使用cucumber dosnt,因为cucumber dosnt允许您在扩展中添加扩展标签课程。

    @After
public void close_browser_window(Scenario scenario) throws Exception {
    if (scenario.isFailed()) {
        scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png");
    }
}

感谢您的帮助

更新答案:

将钩子添加到一个单独的类中,该类别处理所有前场/之后的设置和拆卸 -

public class Hooks {
private static WebDriver driver;
public static WebDriver getDriver() { 
  return driver;
}
@Before
public void startTest(Scenario scenario) {
    driver = new DriverFactory("chrome");
}
@After
public void close_browser_window(Scenario scenario) throws Exception {
 if (scenario.isFailed()) {
    scenario.embed(((TakesScreenshot)      
 driver).getScreenshotAs(OutputType.BYTES), "image/png");
 
 driver.close()
}
}
public class LoginSteps {
  WebDriver driver = Hooks.getDriver();
  //steps
}

对于更高级的做事方式,请使用诸如picocontainer之类的东西来查看依赖项注入,因此您不必依靠挂钩中的静态WebDriver实例,而可以将其传递到每个每个的构造函数中步骤类。

最新更新