2016-09-13 3 views
0

J'essaie d'exécuter un fichier de fonction de concombre qui Step Definition dans deux fichiers différents. Toutes les méthodes de la première définition d'étape sont exécutées et lors de l'exécution de la seconde, elle lance une nouvelle instance de navigateur au lieu de continuer avec une instance existante.Exécuter la définition de pas de concombre avec plusieurs fichiers avec le modèle d'objet Page

concombre fichier Feature Scénario: Donné j'ouvre Firefox et naviguer à Guru Quand j'Entr.NomUtilis et mot de passe et login gourou Et je clique sur un nouveau client Ensuite Nouvelle page client s'affiche Et je clique sur HomePage ensuite HomePage est affiché

Première étape Définition

package stepDefination; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.support.PageFactory; 
import Pages.HomePage; 
import Pages.NewCustomerPage; 
import cucumber.api.java.en.Then; 
import cucumber.api.java.en.When; 

public class GuruStepDef { 
    WebDriver Driver; 
    NewCustomerPage customerPage; 
    HomePage homePage = new HomePage(Driver); 

    @When("^I enter UserName and Password and login to guru$") 
     public void I_enter_and_and_login_to_guru() { 
      homePage=homePage.setup(); 
      homePage.navigateToWebApp(); 
     } 

@Then("^HomePage is displayed$") 
    public void Homepage_is_displayed() { 
     //assert 
    } 

@Then("^I click on New Customer$") 
    public void I_click_on_New_Customer() { 
     customerPage= homePage.NavigateToCustomerPage(); 
    } 

@Then("^New Customer Page is displayed$") 
    public void New_Customer_Page_is_displayed() { 
     //assert 
    } 

}

Deuxième étape Définition

package stepDefination; 

import org.openqa.selenium.WebDriver; 
import Pages.HomePage; 
import Pages.NewCustomerPage; 
import cucumber.api.java.en.Then; 

public class SmokeTest { 

    WebDriver Driver; 
    NewCustomerPage customerPage; 
    HomePage homePage = new HomePage(Driver); 

@Then("^I click on HomePage$") 
    public void I_click_on_HomePage() { 
     homePage=customerPage.Manager(); 
} 

}

Répondre

1

Dans les deux classes, vous avez:

HomePage homePage = new HomePage(Driver); 

Vous créez deux instances de HomePage. Si vous souhaitez utiliser le même objet, vous devez le partager entre les deux classes. Par exemple, vous pouvez créer HomePage dans l'une des classes et utiliser un accesseur dans l'autre, ou vous pouvez utiliser un modèle Singleton dans l'objet lui-même pour vous assurer qu'une seule instance est créée à la fois.