Java 如果my sub step文件已经扩展了一个类,如何创建MasterStep/BaseStep?
如果my sub step文件已经扩展了一个类,如何创建MasterStep/BaseStep 我的一个步骤文件的示例代码:Java 如果my sub step文件已经扩展了一个类,如何创建MasterStep/BaseStep?,java,selenium,selenium-webdriver,junit,cucumber,Java,Selenium,Selenium Webdriver,Junit,Cucumber,如果my sub step文件已经扩展了一个类,如何创建MasterStep/BaseStep 我的一个步骤文件的示例代码: public class LoginSteps extends DriverFactory { WebDriver driver = getDriver(); @Given("^User navigates to the \"([^\"]*)\" website$") public void user_navigates_to_the_website(String u
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
我需要使用下面的标记/代码,但我不想在每个步骤类/文件中重复,当尝试在我的DriverFactory中添加Cumber标记时,我不允许这样做,因为Cumber不允许您在扩展类中添加标记
@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实例,而是可以将其传递到每个步骤类的构造函数中。思考LoginSteps扩展DriverFactory的原因。它真的是一种DriverFactory吗?请考虑使用构造函数而不是继承。@ AZUR青蛙,谢谢,但我需要一个位置来初始化我的其他类,BaseP= PGeFalth.InEnLeTimsScript,BasePage.class;在所有类中,不需要在钩子代码之后重复。在任何课堂上提到它,cucumber都会把它捡起来。对于每个场景,都会创建一个所有步骤定义和钩子类的新实例。不允许扩展包含步骤定义或钩子的类。很高兴能为您提供帮助:@GbruI不明白。为什么你创造了三个关卡而不是两个关卡?@chamo不明白我自己的答案,这似乎是错误的,但仍然被接受。更新了一些更合理的东西。