我对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)
}
答案 0 :(得分:0)
如果没有真正看到loginPage
或topNavigationMenu
的代码,我认为您已将WebDriver的即时消息放在loginPage
和topNavigationMenu
的构造函数中。使构造函数像这样。
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;
}
}