如果我的子步骤文件已经扩展了类,如何创建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实例,而可以将其传递到每个每个的构造函数中步骤类。