【问题标题】:Cucumber 'After' Hook not working?黄瓜“后”钩不起作用?
【发布时间】:2017-05-15 16:17:28
【问题描述】:

Cucumber 'After' Hook 不起作用?

我有一个 DriverFactory 类,它执行下面列出的设置等,但是一旦执行了所有步骤,DriverFactory 中的“Cucumber After”方法似乎就不起作用了?

我想要一个主钩子类 'Before' 'After' 等,它将停止步骤文件中的代码重复

public class DriverFactory  {
protected WebDriver driver;
protected BasePage basePage;
protected LoginPage loginPage;

public WebDriver getDriver() {
    if(driver == null) {
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\src\\test\\java\\resources\\other\\chromedriver.exe");
        this.driver = new ChromeDriver();
        this.driver.manage().window().maximize();
        this.driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
    }
    return this.driver;
}

public WebDriver returnDriver() {
    return this.driver;
}


@After
public void test() throws Throwable {
    this.driver.close();
    this.driver.quit();
}

}

public class LoginSteps {
DriverFactory driverFactory = new DriverFactory();
WebDriver driver = driverFactory.getDriver();

@Given("^User navigates to the \"([^\"]*)\" website$")
public void user_navigates_to_the_website(String url) throws Throwable {
    BasePage basePage = new BasePage(driver);
    basePage.loadUrl(url);
}

@And("^User entered the \"([^\"]*)\" username$")
public void user_entered_the_username(String username) throws Throwable {
    LoginPage loginPage = new LoginPage(driver);
    loginPage.setUsername(username);
}

【问题讨论】:

  • 我对 cucumber-javacucumber-junit 都使用 1.2.4 版本,它对我来说很好用。我认为全局挂钩没有任何问题。
  • @Gaurang Shah 你能扩展具有全局挂钩的类吗?例如 classA 扩展了 classGlobalHooks?
  • 我从来不需要那个,所以我不知道。你可以试试看。
  • @Gaurang Shah 但是如果有单独的班级,Master Hooks 怎么知道何时执行?
  • 他们不需要。只要它们在类路径中。其他 java 文件所在的位置相同,Cucumber 会计算出来。

标签: java selenium-webdriver webdriver cucumber


【解决方案1】:

我遇到了同样的问题 - 我的 @Before 钩子正在工作,但我的 @After 钩子没有。结果证明这是由于一个简单的导入问题 - 可能是由于 Intellij 向我提供导入列表时选择了错误的选项造成的。我选择了 junit.After 类而不是 cucumber.api.Java.After 类:

import cucumber.api.java.Before;
import cucumber.api.java8.En;
import org.junit.After;
import org.openqa.selenium.By;

【讨论】:

  • 我有同样的问题,但我正在导入正确的注释 io.cucumber.java.After;那么我的问题可能是什么?
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
相关资源
最近更新 更多