Cucumber-jvm共享驱动示例

Cucumber-jvm shared Driver example

有人有 cucumber-jvm 的 sharedDriver 示例吗? SharedDriver 已按照 Ashlak 的描述实现,但我如何实例化驱动程序并在步骤、页面对象之间共享?

共享驱动程序class:

public class SharedDriver extends EventFiringWebDriver {
    private static final WebDriver REAL_DRIVER = WebDriverFactory.create();

    private static final Thread CLOSE_THREAD = new Thread() {
        @Override
        public void run() {
            REAL_DRIVER.quit();
        }
    };

    static {
        Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
    }

    public SharedDriver() {
        super(REAL_DRIVER);
    }

    @Override
    public void quit() {
        if (Thread.currentThread() != CLOSE_THREAD) {
            throw new UnsupportedOperationException("You shouldn't quit this WebDriver. It's shared and will quit when the JVM exits.");
        }
        super.quit();
    }

    @Before
    public void deleteAllCookies() {
        manage().deleteAllCookies();
    }

    @After
    public void embedScreenshot(Scenario scenario) {
        try {
            byte[] screenshot = getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png");
        } catch (WebDriverException somePlatformsDontSupportScreenshots) {
            System.err.println(somePlatformsDontSupportScreenshots.getMessage());
        }
    }
}

如果我有一个包含步骤 class 的登录页面、注册页面,我应该如何使用此 sharedDriver?

谢谢!

让我回答我的问题。

SharedDriver class(见上文)很好,唯一的问题是配置 cucumber picocontainer,使用 SharedDriver 代替 WebDriver 驱动程序并使用此驱动程序实例化页面对象。作业将由 picocontainer 处理。