我是Selenium Web驱动程序的新手。我正在编写测试以测试登录页面。我的问题是-我有2个测试,一个用于有效登录,另一个用于无效登录。理想情况下,它们应该是独立的,但在我的情况下,一种情况是登录后打开页面,因此另一项测试失败。
我尝试为每个测试重新启动浏览器,但我认为这不是理想的选择。
登录页面
package com.ninja.pages;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
public class LoginPage
{
// http://tutorialsninja.com/demo/index.php?route=account/login
WebDriver driver;
@FindBy(how = How.XPATH, using = "//input[@id='input-email']")
WebElement email;
@FindBy(how = How.XPATH, using = "//input[@id='input-password']")
WebElement password;
@FindBy(how = How.XPATH, using = "//input[@class='btn btn-primary']")
WebElement login;
@FindBy(how = How.XPATH, using = "//div[@class='alert alert-danger alert-dismissible']")
WebElement warning;
public LoginPage(
WebDriver driver)
{
this.driver = driver;
}
public String getTitle()
{
return driver.getTitle();
}
public String doLoginValid(String email1, String pwd)
{
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
email.sendKeys(email1);
password.sendKeys(pwd);
login.click();
return driver.getTitle();
}
public String doLoginInValid(String email1, String pwd)
{
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
email.sendKeys(email1);
password.sendKeys(pwd);
login.click();
return warning.getText();
}
}
LoginPageTest
package com.ninja.testcases;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import com.ninja.pages.LoginPage;
import com.ninja.util.BrowserFactory;
public class LoginPageTest
{
static LoginPage loginPage;
static WebDriver driver;
@BeforeAll
public static void makeConnection()
{
driver = BrowserFactory.stratBrowser("chrome");
loginPage = PageFactory.initElements(driver, LoginPage.class);
}
@BeforeEach
public void startWebsite()
{
BrowserFactory.startWebsite("http://tutorialsninja.com/demo/index.php?route=account/login");
assertEquals("Account Login", loginPage.getTitle());
}
@Test
public void testDoLoginValid01()
{
assertEquals("My Account", loginPage.doLoginValid("ram@gmail.com", "Ram@123"));
}
@Test
public void testDoLoginInvalid02()
{
assertEquals("Warning: No match for E-Mail Address and/or Password.",
loginPage.doLoginInValid("ramq@gmail.com", "Ram@123"));
}
@Test
public void testDoLoginInvalid03()
{
assertEquals("Warning: No match for E-Mail Address and/or Password.",
loginPage.doLoginInValid("ram@gmail.com", "Rama@123"));
}
}
答案 0 :(得分:1)
有时关闭浏览器不会结束会话。您应该有一个AfterEach尝试查找并单击“注销”按钮