2017-12-11 11 views
-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を使用する必要がありますか?

ありがとうございます!

+0

[ask]、特に[mcve](MCVE)の部分、[どの程度の研究努力が必要ですか](https://meta.stackoverflow.com/questions/261592/how-much-research)をお読みください。 -effort-of-stack-overflow-users)これはあなた自身のプログラムをデバッグし、自分で問題を解決するのに役立ちます。あなたがこれを行い、まだまだ立ち往生している場合は、あなたがMCVEを投稿し、何を試したのか、そしてエラーメッセージを含む実行結果を投稿して、より良くあなたを助けることができます。また、ページや関連するHTMLへのリンクを提供してください。 – JeffC

+0

@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

答えて

1

私の質問に答えさせてください。

SharedDriverクラス(上記参照)は良いですが、唯一のことは、キュウリのピコ容器を設定し、WebDriverドライバの代わりにSharedDriverを使用し、このドライバでページオブジェクトをインスタンス化することです。仕事はピコ容器で処理されます。

関連する問題