The Page Object Pattern is used to model web pages in test automation. It defines page classes for different pages on a site that contain action methods to interact with page elements and validation methods to assert page content. The sample code shows a PageFactory class that initializes page objects for Electronics, Clothing and Furniture pages. The ElectronicsPage class contains action methods like searchItem() and validation methods like isPriceEqualTo() to validate search results. A Validation class is used to check assertions. A test case uses the page objects to automate a test flow.
4. Sample Electronics page
public class ElectronicsPage {
// Action methods on page
public ElectronicsPage searchItem(String searchItemName) {
SeleniumCommands.type(searchItemName);
SeleniumCommands.click("searchButton");
return this;
}
public String getItemPrice(String searchItemName) {
return SeleniumCommands.getValue(searchItemName);
}
// Check methods on Page
public Validaton isPriceEqualTo(String itemPrice) {
return new Validaton(SeleniumCommands.getValue("searchItem"), itemPrice);
}
public Validaton isElectronicsPageOpened(String electronicsPageTitle) {
return new Validaton(SeleniumCommands.getPageTitle(),
electronicsPageTitle);
}
}
5. Validation Class
public class Validaton {
Object actual;
Object expected;
public Validaton(Object actual, Object expected) {
this.actual = actual;
this.expected = expected;
}
public Validaton(Object actual) {
this.actual = actual;
}
public void shouldBeEqual() {
Assert.assertEquals(actual, expected);
}
public void shouldBeTrue() {
Assert.assertTrue((boolean) actual);
}
}
6. Sample Test Case
public class SampleTest {
PageObject pageObject = new PageObject();
@Test
public void test() {
pageObject.gotoElectronicsPage().searchItem("MACBOOK").isPriceEqualTo("1400").shouldBeEqual();
}
}
pageObject.gotoElectronicsPage().
searchItem("MACBOOK")
shouldBeEqual()
isPriceEqualTo("1400")
ACTION
CHECK
VALIDATION