我正在尝试在两个不同的文件中执行一个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();
}
}
答案 0 :(得分:1)
在这两个课程中,你有:
HomePage homePage = new HomePage(Driver);
您正在创建两个HomePage实例。如果要使用同一个对象,则需要在两个类之间共享它。例如,您可以在其中一个类中创建HomePage并在另一个类中使用getter,或者您可以在对象本身中使用Singleton模式以确保一次只创建一个实例。