package org.lightadmin.page; import org.lightadmin.SeleniumContext; import org.lightadmin.data.User; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import static org.junit.Assert.fail; @Component public class LoginPage extends BasePage<LoginPage> { @FindBy( name = "j_username" ) private WebElement login; @FindBy( name = "j_password" ) private WebElement password; @FindBy( id = "signIn" ) private WebElement submitButton; @Autowired public LoginPage( SeleniumContext seleniumContext ) { super( seleniumContext ); } public LoginPage enterLogin( String login ) { webDriver().clearAndType( this.login, login ); return this; } public LoginPage enterPassword( String password ) { webDriver().clearAndType( this.password, password ); return this; } public void submit() { submitButton.submit(); } public boolean isLoggedOut() { return webDriver().isElementPresent( submitButton ); } public DashboardPage loginAs( User user ) { return loginAs( user.getLogin(), user.getPassword() ); } public DashboardPage loginAs( String login, String password ) { enterLogin( login ).enterPassword( password ).submit(); return new DashboardPage( seleniumContext ).get(); } public LoginPage loginAsExpectingError( User user ) { return loginAsExpectingError( user.getLogin(), user.getPassword() ); } public LoginPage loginAsExpectingError( String login, String password ) { enterLogin( login ).enterPassword( password ).submit(); return new LoginPage( seleniumContext ).get(); } public String errorMessage() { return webDriver().findElement( By.id( "alert-message" ) ).getText(); } @Override protected void load() { webDriver().get( baseUrl() + "/login" ); } @Override protected void isLoaded() throws Error { try { webDriver().findElement( By.xpath( "//form[@id='login-form']" ) ); } catch ( NoSuchElementException e ) { fail(); } } }