Wasi
Wasi

Reputation: 751

Multiple browser windows opening automatically when one class is called in another class

I have created a class in which I am creating all the methods I require for my test automation. Issue which I am facing is that when I run main class, it works fine. But when I call that class in other class it opens 2 browser windows. The test is performed on 1 and other remains ideal. Also when I use close() or quit() method for @After, it closes the ideal window not the one which I am working on.

Below is my code snippet for ref.

Main class

public class ProjectManagement{
WebDriver driver = new FirefoxDriver();

public void navigateCreate(String uid, String pass) throws Throwable {

    driver.manage().window().maximize();
    driver.get(baseurl);
    driver.findElement(By.id("Email")).sendKeys(uid);
    driver.findElement(By.id("Password")).sendKeys(pass);
    driver.findElement(By.id("loginBtn")).click();
    driver.findElement(By.linkText("Projects")).click();
    driver.findElement(By.linkText("Create New Project")).click();
}
}

Test Class

public class NewTest extends ProjectManagement{
ProjectManagement project1 = new ProjectManagement();


@Test
public void createPro() throws Throwable {
        project1.navigateCreate(UId,Password);
}

    @AfterTest
public void afterTest() {

    driver.quit();
}

}

Upvotes: 0

Views: 1900

Answers (1)

tim-slifer
tim-slifer

Reputation: 1088

If you are extending ProjectManagement, you don't need to instantiate it on the sub-class. By doing so, you're effectively creating two instances of the class and, as such, two instances of WebDriver (which in turn generates two browser windows).

So, remove the following:

ProjectManagement project1 = new ProjectManagement();

And change your createPro() method to:

@Test
public void createPro() throws Throwable {
    navigateCreate(UId,Password);
}

Upvotes: 1

Related Questions