首页 文章

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

提问于
浏览
0

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

黄瓜功能文件场景:鉴于我打开Firefox并导航到大师当我输入用户名和密码并登录到大师时我点击新客户然后显示新客户页面然后我点击主页然后显示主页

First Step Definition

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
    }

}

Second Step Definition

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 回答

  • 1

    在这两个课程中,您有:

    HomePage homePage = new HomePage(Driver);
    

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

相关问题