Werfen Sie einen Blick auf Gurkenhaken, damit Sie globale "Vorher" - und "Nachher" -Schritte einrichten können, die für jedes Szenario ausgeführt werden, ohne sie in Ihren Feature-Dateien angeben zu müssen.
Da sie für jedes Szenario ausgeführt werden, sind sie ideal für die Initialisierung des Treibers zu Beginn eines jeden Tests. Es kann für die Ausführung Ihrer Anmeldung geeignet sein, aber wenn es eine Chance gibt, dass Sie ein Szenario haben, das keine Anmeldung erfordert, dann wäre das nicht der Weg zu gehen (Alternative weiter unten). Gleiches gilt für das after-Szenario, in dem Sie sich abmelden und den Treiber herunterfahren können. Als Beispiel:
/**
* Before each scenario, initialise webDriver.
*/
@Before
public void beforeScenario() {
this.application.initialiseWebDriver();
}
/**
* After each scenario, quit the web driver.
*/
@After
public void afterScenario() {
this.log.trace("afterScenario");
this.application.quitBrowser();
}
In meinem Beispiel habe ich einfach den Treiber in dem vor Szenario starten, und es in dem nach dem Schließen, aber in der Theorie dieser vor und nach Methoden alles enthalten könnten, müssen Sie nur haben Sie sie in Ihrer Step-Definition-Klasse und kommentieren Sie sie mit den Tags @Before und @After wie gezeigt.
Sie können auch mehrere Vorher- und Nachher-Tags haben, die Sie durch Markieren des Szenarios aufrufen können. Als Beispiel:
/**
* Something to do after certain scenarios.
*/
@After("@doAfterMethod")
public void afterMethod() {
this.application.afterThing();
}
Sie können es nicht laufen so etwas wie dies in Ihrem Schritt defs und als Standard eingerichtet. Sie können Ihr Szenario jedoch mit "@doAfterMethod" taggen und es wird für die getaggten Szenarien ausgeführt, was dies für ein häufiges Szenario, das Sie am Ende von Tests benötigen, aber nicht für alle, sinnvoll ist. Das gleiche würde für Methoden funktionieren, die vor einem Szenario ausgeführt werden, ändern Sie einfach '@After' zu '@Before'.
Denken Sie daran, dass, wenn Sie diese verwenden, das globale Vorher und Nachher (also in diesem Beispiel die Treiberinitialisierung und das Beenden) immer die ersten und letzten Dinge sein werden, mit anderen Vorher/Nachher dazwischen und das Szenario.
Weiterführende Literatur: https://github.com/cucumber/cucumber/wiki/Hooks https://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/
Wenn Sie suchen nach einer Lösung ohne Öffnen und Schließen Treiber für jedes Szenario Blick auf diese - https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-webbit-websockets-selenium/ src/test/java/gurke/beispiele/java/websockets/SharedDriver.java – Grasshopper