2016-07-11 7 views

答えて

3

スクリーンショットは、@After注釈付きの方法のいずれかで撮影する必要があります。このように:フックが最初に昇順(最低注文数で実行される前に

@Before(order = 5) 
public void foo() {} 

@After(order = 500) 
public void bar() {} 

@After 
public void finish(Scenario scenario) { 
    try { 
     byte[] screenshot = 
     helper.getWebDriver().getScreenshotAs(OutputType.BYTES); 
     scenario.embed(screenshot, "image/png"); 
    } catch (WebDriverException somePlatformsDontSupportScreenshots) { 

    System.err.println(somePlatformsDontSupportScreenshots.getMessage()); 
    } 
    finally { 
     helper.getWebDriver().close(); 
    } 
} 
+0

このアプローチの問題は、ブラウザを閉じたくない場合があります。シナリオが失敗した場合、その理由はいくつかの機能にあります。すべてのシナリオで同じブラウザを使用しています。これをメソッドの後に使用すると、ブラウザが閉じられ、次のシナリオではブラウザセッションが見つからず、失敗します。 – Samantha

+0

一部の機能ファイルのすべてのシナリオで同じブラウザセッションを使用するのが正しいかどうかわかりません。 – Samantha

+0

@toshaキュウリのベストプラクティスでは、すべてのシナリオを完全に隔離しておくことが推奨されています。それを言って、 '@ After'アノテートされたメソッドの一つでクッキーをクリアしている限り、同じセッションを再利用することができます –

7

あなたが実行順序を制御するために@Before@Afterに渡すことができる「注文」の引数があります)、Afterフックは降順(hightest order number first)で実行されます。

+0

isscanrioが失敗したことを確認しています。失敗した場合、いくつかのコードを実行していますか?最後のシナリオが失敗し、次の機能の最初のステップも失敗します。あなたはそのような状況に対処する方法を知っていますか? あなたの助けに感謝します。 – Samantha

+0

@tosha:新しいスタックオーバーフローの質問を開始してください –

+0

私はしてください確認してください – Samantha

関連する問題