0

2 つの異なるファイルでステップ定義を行う Cucumber 機能ファイルを実行しようとしています。最初のステップ定義のすべてのメソッドが実行され、2 番目のメソッドを実行すると、既存のインスタンスを続行する代わりに、新しいブラウザー インスタンスが起動されます。

Cucumber 機能ファイル シナリオ: Firefox を開いて Guru に移動した場合 UserName と Password を入力して Guru にログインすると、[New Customer] をクリックすると [New Customer Page] が表示され、[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();
}

}

4

1 に答える 1

1

両方のクラスで、次のものがあります。

HomePage homePage = new HomePage(Driver);

HomePage の 2 つのインスタンスを作成しています。同じオブジェクトを利用したい場合は、2 つのクラス間で共有する必要があります。たとえば、クラスの 1 つで HomePage を作成し、別のクラスでゲッターを使用するか、オブジェクト自体で Singleton パターンを使用して、一度に 1 つのインスタンスのみが作成されるようにすることができます。

于 2016-09-16T20:49:19.507 に答える