如何测试具有其他测试的“登录”页面?

时间:2019-05-15 13:23:50

标签: java selenium selenium-webdriver

我是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"));
   }
}

1 个答案:

答案 0 :(得分:1)

有时关闭浏览器不会结束会话。您应该有一个AfterEach尝试查找并单击“注销”按钮