2016-07-11 20 views

Antwort

3

Der Screenshot sollte in einer der annotierten Methoden @After aufgenommen werden. Wie folgt aus:

@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

Das Problem mit diesem Ansatz ist manchmal Ich möchte den Browser nicht schließen, Wenn das Szenario fehlschlägt, ist der Grund dafür, dass ich für einige meiner Funktionen den gleichen Browser für alle Szenarien verwende. Wenn ich diese after-Methode verwende, wird der Browser geschlossen und das nächste Szenario wird die Browser-Sitzung nicht finden und wird fehlschlagen. – Samantha

+0

Ich weiß nicht, ob es korrekt ist, die gleiche Browsersitzung für alle Szenarien in einigen Feature-Dateien zu verwenden. – Samantha

+0

@tosha es ist strongly beratend von den Cucumber Best Practices, dass alle Szenarien vollständig voneinander isoliert sind. Wenn du das sagst, kannst du die selbe Sitzung immer noch verwenden, solange du die Cookies in einer deiner annotierten Methoden '@ After' löschst –

7

Es gibt ein ‚Ordnung‘ Argument, das Sie @Before und @After passieren können, um die Reihenfolge der Ausführung zu steuern:

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

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

Vor Haken sind in aufsteigender Reihenfolge (niedrigste Auftragsnummer zuerst ausgeführt), während After-Hooks in absteigender Reihenfolge ausgeführt werden (höchste Bestellnummer zuerst).

+0

Ich überprüfe, ob isscanrio fehlgeschlagen ist, und wenn es fehlschlägt, führe ich Code aus? Wenn ich zwei Feature-Dateien ausführe, ist das letzte Szenario fehlgeschlagen, und der erste Schritt der nächsten Funktion wird ebenfalls fehlschlagen, weil Gurken vorheriges Szenario fehlgeschlagen ist. Weißt du, wie man mit dieser Art von Situation umgeht? Ihre Hilfe wird sehr geschätzt. – Samantha

+0

@tosha: Bitte starten Sie eine neue Stack Overflow Frage –

+0

Ich habe überprüft, bitte – Samantha