-1
誰かがcucumber-jvmのsharedDriverの例を持っていますか? SharedDriverはAshlakによって記述されているように実装されていますが、ドライバ、およびステップ、ページオブジェクト間の共有をどのようにインスタンス化できますか?Cucumber-jvm sharedドライバの例
共有ドライバクラス:
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());
}
}
}
私はLoginPage、ステップクラスの登録ページをお持ちの場合は、どのように私はこのsharedDriverを使用する必要がありますか?
ありがとうございます!
[ask]、特に[mcve](MCVE)の部分、[どの程度の研究努力が必要ですか](https://meta.stackoverflow.com/questions/261592/how-much-research)をお読みください。 -effort-of-stack-overflow-users)これはあなた自身のプログラムをデバッグし、自分で問題を解決するのに役立ちます。あなたがこれを行い、まだまだ立ち往生している場合は、あなたがMCVEを投稿し、何を試したのか、そしてエラーメッセージを含む実行結果を投稿して、より良くあなたを助けることができます。また、ページや関連するHTMLへのリンクを提供してください。 – JeffC
@brobeeあなたは状態とオブジェクトの作成を共有するために依存性注入を調べるべきです。 Picocontainerは最も侵入性が低く、コンストラクタインジェクションを使用します。 Cucmberにはすでにレディメイドのサポートがあります。これを参照してくださいhttp://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer。 shareddriverオブジェクトをpageobjectコンストラクタに渡すと、それは作成され、picoによって渡されます。同じドライバインスタンスは、同じsceanarioで呼び出される同様のコンストラクタを持つ他のpageオブジェクトに渡されます。 – Grasshopper