Multiple browser windows opening automatically in cucumber

Refresh

1 weeks ago

Views

1k time

1

I don't know why I am getting 2 firefox browsers opened for the follwoing example. Can some one please tell me what is wrong in below code. I am new to cucumber and I am trying to develop cucumber poc with page object model.

Feature file:

    Scenario: Smoke test for application
      Given I am on home page

Step Defination file:

public class HomePageSteps {

CustomerDetails customerDetails;

HomePage homePage=new HomePage();

public HomePageSteps(CustomerDetails customerDetails){
    this.customerDetails=customerDetails;
}

@Before
public void environmentSteup(){
    homePage.envSetup();
}

@Given("^I am on home page$")
public void i_am_on_home_page() throws Throwable {
    homePage.openURL();
}
}

Actual implementation of Step definition file:(HomePage.java)

public class HomePage extends BasePage{

public void openURL() {
    driver.get("https://applicationURL.aspx");
    System.out.println("I am on home page executed");
}

public void envSetup() {
    driver=new FirefoxDriver();
    driver.manage().window().maximize();
}
}

BasePage.java

public abstract class BasePage {
protected WebDriver driver=new FirefoxDriver();
}

CustomerDetails.java

public class CustomerDetails {
private String mdn=null;

private String Fname=null;

private String Lname=null;

public String getMdn() {
    return mdn;
}

public void setMdn(String mdn) {
    this.mdn = mdn;
}
}

2 firefox browsers are opened: First it opens a blank browser. Later it opens another browser and in this browser it opens the application URL.

2 answers

3

You have two calls to open browser windows...

Once in the sub-class in envSetup() - driver=new FirefoxDriver();

And in the super class driver variable declaration with initialization - protected WebDriver driver=new FirefoxDriver();

You have to remove one of them, no need for the super class one... This is the one giving you the blank window

1

Обратитесь к этой странице. Ваш maximize()звонок в envSetup()может делать больше , чем вы думаете

В селена WebDriver, что управление () [driver.manage ()]

редактировать:

Вам также не нужно создавать экземпляр new FirefoxDriver()снаружи , BasePageкак вы уже инстанцированы в driverполе с этим объектом. Все , что расширение BasePageбудет иметь доступ к этой driverобласти. Это не проблема , что вы делаете это, это просто посторонний код , который не должен быть там