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 处理。
有人有 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 处理。