Separation of concerns with page objects
Our second issue is that, while we abstracted away our WebElement
creation, we didn’t abstract away any of the heavy lifting performed by our test script. We are now using a page object, but we are still going to have lots of duplication in our code. Let’s illustrate this by looking at a script to perform a login and how we would do that using our new page objects.
Let's start with a basic login page object:
package com.masteringselenium.page_objects; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class LoginPage { public static By usernameLocator = By.id("username"); public static By passwordLocator = By.id("password"); public static By loginButtonLocator = By.id("login"); }
Next, we need a test that uses this LoginPage
object:
@Test public void logInToTheWebsite() { driver.get("http://web.masteringselenium.com/index.html"); WebElement username = driver.findElement(LoginPage.usernameLocator); WebElement password...