selenium打开多个窗口,因为有多个实例

时间:2016-10-04 15:40:39

标签: selenium-webdriver

我对selenium和编程很新,所以这可能是一个简单的解决方法。我知道这是打开多个浏览器窗口,因为我正在定义多个实例(loginPage和topNavigationMenu)。有没有办法防止打开多个浏览器?

----- loginTest.java文件-----

public class loginTest {

loginPage login = new loginPage();
topNavigationMenu navMenu = new topNavigationMenu();

String url = "http://www.url.com";

@Test
public void loginSuccessfully()
{
    String email = "username";
    String password = "password";

    login.loadSignInPage(url);
    login.verifySignInPage();

    login.enterLoginCredentials(email,password);
    login.clickSignInButton();

    navMenu.verifyNavigationMenu();

    driver.close();
}

----- loginPage.java文件----- public class loginPage {

private WebDriver driver;

public loginpage(WebDriver driver)  // this is the line with that error (line 33)
{
    this.driver = driver;
}


public void loadSignInPage(String url)
{
    driver.get(url);
    driver.manage().window().maximize();
}

...etc...(more methods)

}

1 个答案:

答案 0 :(得分:0)

如果没有真正看到loginPagetopNavigationMenu的代码,我认为您已将WebDriver的即时消息放在loginPagetopNavigationMenu的构造函数中。使构造函数像这样。

public class LoginPage {

  private WebDriver driver;

  public LoginPage(WebDriver driver) {
    this.driver = driver;
  }

}

public class TopNavigationMenu {

  private WebDriver driver;

  public TopNavigationMenu(WebDriver driver) {
    this.driver = driver;
  }

}

请删除方法closeBrowser,因为关闭浏览器应该在您的测试中发生。然后在测试中实例化驱动程序。

public class LoginTest { 

@Test
public void loginSuccessfully() {
  WebDriver driver = new FireFoxDriver();
  LoginPage login = new LoginPage(driver);

  String email = "username";
  String password = "password";

  login.loadSignInPage(url);
  login.verifySignInPage();
  login.enterLoginCredentials(email,password);
  login.clickSignInButton();

  new TopNavigationMenu(driver).verifyNavigationMenu();

  driver.quit();
}

另外,请考虑使用setUp和tearDown方法。我无法看到你是使用JUnit还是TestNG所以没有这些信息,我无法帮助你。

更新问题后编辑

在您的更新中,您的类名为loginPage,但您的构造函数与名称不匹配,称为loginpage。所以将构造函数更改为此。

public class loginPage {

  private WebDriver driver;

  public loginPage(WebDriver driver) {
    this.driver = driver;
  }

}