我有理解這種模式的問題。 首先,我想測試我的頁面中的登錄,我有一個LoginPage,它在成功驗證後擴展了我的PageObject,它返回LoginPageReceipt。現在,我已經loginPageReceipt我想保留這爲我的第二頁。我想的第二個問題是,如果首先我測試登錄然後我想測試下一個模塊,但我必須登錄。我應該怎麼做?我的第二個測試不應該使用第一次測試的結果,我不應該複製我的代碼。這是我的課程。我是如何做到的。頁面對象模式理解
package Init;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.concurrent.TimeUnit;
public class FunctionalTest {
protected static WebDriver driver;
// private static WebDriverWait driverWait;
@BeforeClass
public static void setUp() {
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
System.setProperty("webdriver.chrome.driver", "src\\main\\resources\\chromedriver.exe");
driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// driverWait = new WebDriverWait(driver, 10);
}
@After
public void cleanUp() {
driver.manage().deleteAllCookies();
}
@AfterClass
public static void tearDown() {
driver.close();
}
}
package Init;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
public class PageObject {
protected WebDriver driver;
public PageObject(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
}
package Login;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import Init.PageObject;
import static org.junit.Assert.assertTrue;
public class LoginPage extends PageObject {
@FindBy(id = "UserName")
private WebElement userName;
@FindBy(id = "Password")
private WebElement password;
@FindBy(id = "loginButton")
private WebElement loginButton;
public LoginPage(WebDriver driver) {
super(driver);
assertTrue(userName.isDisplayed());
assertTrue(password.isDisplayed());
assertTrue(loginButton.isDisplayed());
}
public void enterUserName(String userName) {
this.userName.clear();
this.userName.sendKeys(userName);
}
public void enterUserPassword(String password) {
this.password.clear();
this.password.sendKeys(password);
}
public LoginPageReceipt login() {
loginButton.click();
return new LoginPageReceipt(driver);
}
}
package Contractor;
import Init.PageObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import static org.junit.Assert.assertTrue;
public class ContractorPage extends PageObject {
@FindBy(id = "moduleContent")
private WebElement moduleContent;
public ContractorPage(WebDriver driver) {
super(driver);
assertTrue(moduleContent.isDisplayed());
}
}
package Login;
import Contractor.ContractorPage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import Init.PageObject;
public class LoginPageReceipt extends PageObject {
@FindBy(xpath = "//*[@id=\"loginPartial\"]/span[5]")
private WebElement userNamePanel;
@FindBy(id = "contractors-menuitem")
private WebElement goToContractorPage;
public LoginPageReceipt(WebDriver driver) {
super(driver);
}
public String loginConfirmation() {
return userNamePanel.getText();
}
public ContractorPage contractorPage() {
goToContractorPage.click();
return new ContractorPage(driver);
}
}
package Tests;
import Login.LoginPage;
import Login.LoginPageReceipt;
import org.junit.Test;
import Init.FunctionalTest;
import static org.junit.Assert.assertEquals;
public class LoginTest extends FunctionalTest {
private static final String USER_NAME = "xxx";
private static final String PASSWORD = "xxx";
@Test
public void login() {
FunctionalTest.driver.get("xxx");
LoginPage loginPage = new LoginPage(FunctionalTest.driver);
loginPage.enterUserName(USER_NAME);
loginPage.enterUserPassword(PASSWORD);
LoginPageReceipt loginPageReceipt = loginPage.login();
assertEquals("Użytkownik: " + USER_NAME + " | Wyloguj", loginPageReceipt.loginConfirmation());
}
}
package Tests;
import Contractor.ContractorPage;
import Init.FunctionalTest;
import Login.LoginPage;
import Login.LoginPageReceipt;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ContractorTest extends FunctionalTest {
private static final String USER_NAME = "xxx";
private static final String PASSWORD = "xxx";
@Test
public void contractorPageTest() {
FunctionalTest.driver.get("xxx");
LoginPage loginPage = new LoginPage(FunctionalTest.driver);
loginPage.enterUserName(USER_NAME);
loginPage.enterUserPassword(PASSWORD);
LoginPageReceipt loginPageReceipt = loginPage.login();
assertEquals("Użytkownik: " + USER_NAME + " | Wyloguj", loginPageReceipt.loginConfirmation());
ContractorPage contractorPage = loginPageReceipt.contractorPage();
}
}