使用Page Object Model执行带有多个文件的Cucumber Step Defination

时间:2016-09-13 08:34:55

标签: selenium pageobjects cucumber-java

我正在尝试在两个不同的文件中执行一个Cucumber Feature文件,其中Step Step。执行第一步定义中的所有方法,当执行第二步时,它启动新的浏览器实例,而不是继续使用现有的浏览器实例。

黄瓜功能文件   场景:鉴于我打开Firefox并导航到Guru     当我输入UserName和Password并登录到guru时     然后我点击新客户     然后显示新客户页面     然后我点击HomePage     然后显示HomePage

第一步定义

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
    }

}

第二步定义

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();
}

}

1 个答案:

答案 0 :(得分:1)

在这两个课程中,你有:

HomePage homePage = new HomePage(Driver);

您正在创建两个HomePage实例。如果要使用同一个对象,则需要在两个类之间共享它。例如,您可以在其中一个类中创建HomePage并在另一个类中使用getter,或者您可以在对象本身中使用Singleton模式以确保一次只创建一个实例。