使用 Cucumber、PicoContainer 和 Conductor Framework 的多态步骤定义

Polymorphic Step Definitions with Cucumber, PicoContainer & Conductor Framework

我遇到的问题是,在每个 Cucumber 场景 运行 之后,机车没有被终止。然后我留下了孤立的 Selenium 进程,例如:

501 75709     1   0  1:29PM ??         0:00.05 /Users/rich/IdeaProjects/selenium/chromedriver.mac --port=45715
501 75720     1   0  1:29PM ??         0:00.04 /Users/rich/IdeaProjects/selenium/chromedriver.mac --port=12004

这是我的 PicoContainer 设置 class,因此它会将 Locomotive 实例注入每个 Cucumber 场景(它确实如此):

    public class CustomPicoFactory extends PicoFactory {

    public CustomPicoFactory() {
        addClass(Locomotive.class);
    } 
}

此条目在我的 cucumber.properties 文件中:

cucumber.api.java.ObjectFactory = CustomPicoFactory

这是一个示例步骤定义 class:

public class BorrowerSteps {

    Locomotive locomotive;

    public BorrowerSteps(Locomotive locomotive) {
        this.locomotive = locomotive;
    }
}

在每个场景 运行 之后,我可以调用某种清理方法吗?或者更好的方法来实现我想要实现的目标?

chromedriver 保持打开状态,因为在实例化 Locomotive 对象时,会创建 chromedriver。

在调用 driver.quit() 之前它不会被杀死。为此,您可以调用 locomotive.teardown()locomotive.driver.quit()