From 1952a4550fe79deea1a336fd59504099d7ec834e Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Mon, 9 Jan 2017 09:19:09 -0600 Subject: [PATCH] Polish findbyusername --- .../java/sample/FindByUsernameTests.java | 7 ++-- .../java/sample/pages/HomePage.java | 19 +++++---- .../java/sample/pages/LoginPage.java | 41 ++++++++++++------- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/samples/findbyusername/src/integration-test/java/sample/FindByUsernameTests.java b/samples/findbyusername/src/integration-test/java/sample/FindByUsernameTests.java index cdf6de4..12ed00b 100644 --- a/samples/findbyusername/src/integration-test/java/sample/FindByUsernameTests.java +++ b/samples/findbyusername/src/integration-test/java/sample/FindByUsernameTests.java @@ -34,6 +34,7 @@ import org.springframework.test.web.servlet.htmlunit.webdriver.MockMvcHtmlUnitDr /** * @author Eddú Meléndez + * @author Rob Winch */ @RunWith(SpringRunner.class) @AutoConfigureMockMvc @@ -47,9 +48,7 @@ public class FindByUsernameTests { @Before public void setup() { - this.driver = MockMvcHtmlUnitDriverBuilder - .mockMvcSetup(this.mockMvc) - .build(); + this.driver = MockMvcHtmlUnitDriverBuilder.mockMvcSetup(this.mockMvc).build(); } @After @@ -66,7 +65,7 @@ public class FindByUsernameTests { @Test public void login() { LoginPage login = HomePage.go(this.driver); - HomePage home = login.login(); + HomePage home = login.form().login(HomePage.class); home.assertAt(); home.containCookie("SESSION"); home.doesNotContainCookie("JSESSIONID"); diff --git a/samples/findbyusername/src/integration-test/java/sample/pages/HomePage.java b/samples/findbyusername/src/integration-test/java/sample/pages/HomePage.java index e7487e2..32522d6 100644 --- a/samples/findbyusername/src/integration-test/java/sample/pages/HomePage.java +++ b/samples/findbyusername/src/integration-test/java/sample/pages/HomePage.java @@ -22,26 +22,26 @@ import org.openqa.selenium.By; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; import static org.assertj.core.api.Assertions.assertThat; /** * @author Eddú Meléndez + * @author Rob Winch */ public class HomePage extends BasePage { + @FindBy(css = "input[type=\"submit\"]") + WebElement logout; public HomePage(WebDriver driver) { super(driver); } - public static LoginPage go(WebDriver driver) { - get(driver, "/"); - return PageFactory.initElements(driver, LoginPage.class); - } - public void assertAt() { - assertThat(getDriver().getTitle()).isEqualTo("Spring Session Sample - Secured Content"); + assertThat(getDriver().getTitle()) + .isEqualTo("Spring Session Sample - Secured Content"); } public void containCookie(String cookieName) { @@ -67,9 +67,12 @@ public class HomePage extends BasePage { } public HomePage logout() { - WebElement logout = getDriver().findElement(By.cssSelector("input[type=\"submit\"]")); - logout.click(); + this.logout.click(); return PageFactory.initElements(getDriver(), HomePage.class); } + public static LoginPage go(WebDriver driver) { + get(driver, "/"); + return PageFactory.initElements(driver, LoginPage.class); + } } diff --git a/samples/findbyusername/src/integration-test/java/sample/pages/LoginPage.java b/samples/findbyusername/src/integration-test/java/sample/pages/LoginPage.java index 9c5388d..16cf562 100644 --- a/samples/findbyusername/src/integration-test/java/sample/pages/LoginPage.java +++ b/samples/findbyusername/src/integration-test/java/sample/pages/LoginPage.java @@ -16,27 +16,21 @@ package sample.pages; +import org.openqa.selenium.SearchContext; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.DefaultElementLocatorFactory; import static org.assertj.core.api.Assertions.assertThat; /** * @author Eddú Meléndez + * @author Rob Winch */ public class LoginPage extends BasePage { - @FindBy(name = "username") - private WebElement username; - - @FindBy(name = "password") - private WebElement password; - - @FindBy(tagName = "button") - private WebElement button; - public LoginPage(WebDriver driver) { super(driver); } @@ -45,11 +39,30 @@ public class LoginPage extends BasePage { assertThat(getDriver().getTitle()).isEqualTo("Spring Session Sample - Log In"); } - public HomePage login() { - this.username.sendKeys("user"); - this.password.sendKeys("password"); - this.button.click(); - return PageFactory.initElements(getDriver(), HomePage.class); + public Form form() { + return new Form(getDriver()); } + public class Form { + + @FindBy(name = "username") + private WebElement username; + + @FindBy(name = "password") + private WebElement password; + + @FindBy(tagName = "button") + private WebElement button; + + public Form(SearchContext context) { + PageFactory.initElements(new DefaultElementLocatorFactory(context), this); + } + + public T login(Class page) { + this.username.sendKeys("user"); + this.password.sendKeys("password"); + this.button.click(); + return PageFactory.initElements(getDriver(), page); + } + } }