gpt4 book ai didi

java - 如果我的子步骤文件已经扩展了一个类,如何创建 MasterStep/BaseStep?

转载 作者:行者123 更新时间:2023-12-02 13:19:54 25 4
gpt4 key购买 nike

如果我的子步骤文件已经扩展了一个类,如何创建 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

我需要使用下面的标签/代码,但我不想在每个步骤类/文件中重复,并且当尝试在我的 DriverFactory 中添加 cucumber 标签时,我不允许这样做,因为 cucumber 不允许您在扩展中添加标签类。

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

感谢您的帮助

最佳答案

更新的答案:

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

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 之类的依赖注入(inject),因此您不必依赖钩子(Hook)内的静态 WebDriver 实例,而是可以将其传递到每个的构造函数中步骤类。

关于java - 如果我的子步骤文件已经扩展了一个类,如何创建 MasterStep/BaseStep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43613059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com