2017-04-25 1 views
0

Wie erstelle ich einen MasterStep/BaseStep, wenn die meine Unterschrittdateien bereits eine Klasse erweitern?Wie erstelle ich einen MasterStep/BaseStep, wenn die meine Unterschritt-Dateien bereits eine Klasse erweitern?

Beispielcode für einen meiner Schritte Dateien:

public class LoginSteps extends DriverFactory { 

WebDriver driver = getDriver(); 

@Given("^User navigates to the \"([^\"]*)\" website$") 
public void user_navigates_to_the_website(String url) throws Throwable { 
    basePage.loadUrl(url); 
} 

@And("^User entered the \"([^\"]*)\" username$") 
public void user_entered_the_username(String username) throws Throwable { 
    loginPage.setUsername(username); 
} 

@And("^User entered the \"([^\"]*)\" password$") 
public void user_entered_the_password(String password) throws Throwable { 
    l 

Ich brauche die folgenden Tags/Code unten verwenden, aber ich nicht in jedem Schritt Klasse/Datei wiederholt werden soll und bei dem Versuch, die Gurke Tags hinzuzufügen in meiner DriverFactory im nicht erlaubt, da Gurke dosnt Ihnen erlaubt, Tags innerhalb der erweiterten Klassen hinzuzufügen.

@After 
public void close_browser_window(Scenario scenario) throws Exception { 
    if (scenario.isFailed()) { 
     scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png"); 
    } 
} 

Danke für Ihre Hilfe

+1

Denken Sie darüber nach, warum 'LoginSteps' erstreckt' DriverFactory'. Ist es wirklich eine Art 'DriverFactory'? Erwägen Sie die Verwendung von Komposition statt Vererbung. – azurefrog

+0

@azurefrog danke, aber ich brauche einen Ort, um meine anderen Klassen zu initialisieren, \t \t basePage = PageFactory.initElements (Treiber, BasePage.class); – Gbru

+0

Sie müssen den Nach-Hook-Code nicht in allen Klassen wiederholen. Erwähnen Sie es in jeder Klasse und Gurke wird es aufnehmen. Für jedes Szenario wird eine neue Instanz aller Step-Definition- und Hook-Klassen erstellt. – Grasshopper

Antwort

1

BaseSteps erstellen, die DriverFactory erstreckt, erstreckt sich dann Ihre LoginSteps BaseSteps:

public class BaseSteps extends DriverFactory { 

    WebDriver driver = getDriver(); 

    @After 
    public void close_browser_window(Scenario scenario) throws Exception { 
     if (scenario.isFailed()) { 
     scenario.embed(((TakesScreenshot) 
     driver).getScreenshotAs(OutputType.BYTES), "image/png"); 
} 

} 
+0

Sie sind nicht berechtigt, Klassen zu erweitern, die Step-Definitionen oder Haken enthalten – Grasshopper

+0

@Rushby Sie Legende Dank allot, hat den Trick gemacht! – Gbru

+0

Fantastisch froh, ich könnte helfen :) @Gbru – Rushby

Verwandte Themen