将 Webdriver 从 @Before 挂钩传递到 Cucumber 步骤

Pass Webdriver from @Before hook to Cucumber step

我有这样的钩子

public class GeneralHook {
    DriverManager driverManager;
    WebDriver driver;
    ConfigFileReader configFileReader = new ConfigFileReader();

    @Before
    public void before(Scenario scenario) {
        System.out.println("Hook before");
        String browser = System.getProperty("BROWSER");
        if (browser == null) {
            browser = System.getenv("BROWSER");
            if (browser == null) {
                browser = "chrome";
            }
        }
        switch (browser) {
            case "firefox":
                driverManager = DriverManagerFactory.getManager(DriverType.FIREFOX);
                driver = driverManager.getDriver();
                driver.get(configFileReader.getApplicationUrl());
                break;
            case "chrome":
            default:
                driverManager = DriverManagerFactory.getManager(DriverType.CHROME);
                driver = driverManager.getDriver();
                driver.get(configFileReader.getApplicationUrl());
                break;
        }
    }

我需要将驱动程序从这个钩子传递到 Cucumber 的步骤 class。 这有可能吗? 谢谢。

是的,我的朋友。借助像 Cucumber picocontainer 这样的依赖注入,您可以将 Java class 的状态共享给其他 classes。请在下面找到参考 link。

http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer