public static class HomePage { private WebDriver driver; @FindBy(tagName = "body") WebElement body; public HomePage(WebDriver driver) { this.driver = driver; } public void assertAt() { assertThat(this.body.getText()).isEqualToIgnoringWhitespace("ok"); } static <T> T to(WebDriver driver, Class<T> page) { driver.get("http://localhost/"); return PageFactory.initElements(driver, page); } }
public static class DefaultLogoutPage { private WebDriver driver; @FindBy(css = "button[type=submit]") private WebElement submit; public DefaultLogoutPage(WebDriver webDriver) { this.driver = webDriver; } public DefaultLogoutPage assertAt() { assertThat(this.driver.getTitle()).isEqualTo("Confirm Log Out?"); return this; } public DefaultLoginPage logout() { this.submit.click(); return DefaultLoginPage.create(this.driver); } static DefaultLogoutPage to(WebDriver driver) { driver.get("http://localhost/logout"); return PageFactory.initElements(driver, DefaultLogoutPage.class); } } public static class HomePage {
public static class LoginForm { private WebDriver driver; private WebElement username; private WebElement password; @FindBy(css = "button[type=submit]") private WebElement submit; public LoginForm(WebDriver driver) { this.driver = driver; } public LoginForm username(String username) { this.username.sendKeys(username); return this; } public LoginForm password(String password) { this.password.sendKeys(password); return this; } public <T> T submit(Class<T> page) { this.submit.click(); return PageFactory.initElements(this.driver, page); } }
public static class LoginForm { private WebDriver driver; private WebElement username; private WebElement password; @FindBy(css = "button[type=submit]") private WebElement submit; public LoginForm(WebDriver driver) { this.driver = driver; } public LoginForm username(String username) { this.username.sendKeys(username); return this; } public LoginForm password(String password) { this.password.sendKeys(password); return this; } public <T> T submit(Class<T> page) { this.submit.click(); return PageFactory.initElements(this.driver, page); } } }
public static class DefaultLoginPage { @FindBy(css = "div[role=alert]") private WebElement alert;
@FindBy(id = "form") private WebElement form;
public class DateField extends BaseField { private final WebElement dateField; @FindBy( className = "ui-datepicker-calendar" ) private WebElement datePicker; public DateField( WebElement theDateField, SeleniumContext seleniumContext ) { super( seleniumContext ); this.dateField = theDateField; } public String selectDateOfCurrentMonth( String date ) { dateField.click(); webDriver().waitForElementVisible( datePicker ); datePicker.findElement( By.linkText( date ) ).click(); webDriver().waitForElementInvisible( datePicker ); return dateField.getAttribute( "value" ); } }
public class TopNavigationComponent extends StaticComponent { @FindBy( id = "topNav" ) private WebElement topNavigation; public TopNavigationComponent( SeleniumContext seleniumContext ) { super( seleniumContext ); } public LoginPage logout() { findLogoutLink().click(); return new LoginPage( seleniumContext ).get(); } public boolean isLoggedIn() { return webDriver().isElementPresent( topNavigation.findElement( By.className( "welcome" ) ) ); } private WebElement findLogoutLink() { return topNavigation.findElement( By.linkText( "Logout" ) ); } }
public class NavigationMenuComponent extends StaticComponent { @FindBy( id = "menu" ) private WebElement navigationMenuContainer; public NavigationMenuComponent( SeleniumContext seleniumContext ) { super( seleniumContext ); } public ListViewPage navigateToDomain( Domain domain ) { getNavigationLink( domain.getLinkText() ).click(); return new ListViewPage( seleniumContext, domain ).get(); } public DashboardPage navigateToDashboard() { getNavigationLink( "Dashboard" ).click(); return new DashboardPage( seleniumContext ); } private WebElement getNavigationLink( String linkText ) { return navigationMenuContainer.findElement( By.linkText( linkText ) ); } }
public class WarningDialog extends StaticComponent { @FindBy( id = "popup_container" ) private WebElement container; @FindBy( id = "popup_ok" ) private WebElement confirmButton; @FindBy( id = "popup_message" ) private WebElement message; public WarningDialog( SeleniumContext seleniumContext ) { super( seleniumContext ); } public String getMessage() { webDriver().waitForElementVisible( container ); return message.getText(); } public boolean isPresent() { return webDriver().isElementPresent( container ); } public void close() { confirmButton.click(); } }
public class DashboardStatisticsComponent extends StaticComponent { @FindBy( xpath = "//table[@id='dashboard-statistics']" ) private WebElement statisticsTable;
public class BreadcrumbsComponent extends StaticComponent { @FindBy( xpath = "//ul[@id='breadcrumb']" ) private WebElement breadcrumbsContainer;
public class InstructorCourseStudentDetailsViewPage extends AppPage { @FindBy (id = "studentemail") private WebElement studentEmail; public InstructorCourseStudentDetailsViewPage(Browser browser) { super(browser); } @Override protected boolean containsExpectedPageContents() { return getPageSource().contains("Enrollment Details"); } public void verifyIsCorrectPage(String email) { assertTrue(containsExpectedPageContents()); assertEquals(email, studentEmail.getText()); } }
public class InstructorCourseEnrollResultPage extends AppPage { @FindBy(id = "edit_enroll") private WebElement editLink; public InstructorCourseEnrollResultPage(Browser browser) { super(browser); } @Override protected boolean containsExpectedPageContents() { // Intentional check for opening h1 and not closing h1 because the following content is not static return getPageSource().contains("<h1>Enrollment Results for"); } public InstructorCourseEnrollPage clickEditLink() { click(editLink); waitForPageToLoad(); return changePageType(InstructorCourseEnrollPage.class); } }
public class DefaultFindByWidget extends DefaultStubWidget { @FindBy(id = "SOME_SUB_LOCATOR") private DefaultFindByWidget singleWidget; @FindBy(id = "SOME_SUB_LOCATOR") private List<DefaultFindByWidget> multipleWidgets; protected DefaultFindByWidget(WebElement element) { super(element); } @Override public DefaultFindByWidget getSubWidget() { return singleWidget; } @Override public List<DefaultFindByWidget> getSubWidgets() { return multipleWidgets; } }