In my previous project, I worked in selenium with java. In that project I following page object pattern. This is my sample code of selenium with java:
# Create Page Objects
public class HomePage {
@FindBy(how= How.LINK_TEXT, using = "MY ACCOUNT")
WebElement my_account;
@FindBy(how= How.ID, using = "link-to-login")
WebElement login_link;
@FindBy(how= How.LINK_TEXT, using = "LOGOUT")
WebElement logout;
public void clickOnLoginLink()
{
login_link.click();}
public String getMyAccountText()
{
return my_account.getText();}
public void clickLogOut() {
logout.click(); }
}
Separate out Tests , Objects , and Implementation Flows
Steps
public String InvalidLogin(String userName, String password) {
HomePage homePage = PageFactory.initElements(DriverManager.driver, HomePage.class);
homePage.clickOnLoginLink();
LoginPage loginPage = PageFactory.initElements(DriverManager.driver, LoginPage.class);
loginPage.enterUsername(userName);
loginPage.enterPassword(password);
loginPage.clickSubmit();
return loginPage.getInvalidLoginText();}
util
public class DriverManager {
public static WebDriver driver;
String baseUrl;
// Start driver
System.setProperty("webdriver.chrome.driver", "/home/naveen/chromedriver");
driver = new ChromeDriver();
driver.get(baseUrl);
driver.manage().window().maximize();
}
}
Test
@Test
public void verifyValidLogintoSpree()
{
LoginSteps loginSteps = new LoginSteps();
String expected_message = loginSteps.Login("[email protected]", "xtxtxt");
Assert.assertEquals(expected_message, "MY ACCOUNT");
}
These page object is for identifying locators in for one class and then initialising the web elements for steps class. and test code for test file. I want to know the detailed explanation and advantages of using page object pattern. what should I need to improve or going good? I want to know that my understand are correct or not