package net.thucydides.core.pages.integration; import net.thucydides.core.annotations.DefaultUrl; import net.thucydides.core.pages.PageObject; import net.thucydides.core.pages.WebElementFacade; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedCondition; @DefaultUrl("classpath:static-site/index.html") public class StaticSitePageWithFacades extends PageObject { @FindBy(name = "firstname") protected WebElementFacade firstName; @FindBy(name = "lastname") protected WebElementFacade lastName; @FindBy(name = "city") protected WebElementFacade city; @FindBy(name = "country") protected WebElementFacade country; @FindBy(name = "hiddenfield") protected WebElementFacade hiddenField; @FindBy(name = "demo") protected WebElementFacade demoForm; protected WebElementFacade csshiddenfield; protected WebElementFacade readonlyField; protected WebElementFacade doesNotExist; protected WebElementFacade textField; protected WebElementFacade checkbox; protected WebElementFacade radioButton1; protected WebElementFacade radioButton2; protected WebElementFacade selectedCheckbox; protected WebElementFacade buttonThatIsInitiallyDisabled; protected WebElementFacade buttonThatIsInitiallyEnabled; protected WebElementFacade placetitle; protected WebElementFacade dissapearingtext; @FindBy(id = "visible") protected WebElementFacade visibleTitle; @FindBy(id = "color") protected WebElementFacade colors; protected WebElementFacade elements; protected WebElementFacade grid; protected WebElementFacade emptylist; @FindBy(name = "fieldDoesNotExist") protected WebElementFacade fieldDoesNotExist; @FindBy(id = "emptyLabelID") protected WebElementFacade emptyLabel; @FindBy(id = "nonEmptyLabelID") protected WebElementFacade nonEmptyLabel; protected WebElementFacade focusmessage; protected WebElementFacade clients; protected WebElementFacade clients_with_no_headings; protected WebElementFacade clients_with_nested_cells; protected WebElementFacade clients_with_extra_cells; protected WebElementFacade clients_with_missing_cells; protected WebElementFacade table_with_merged_cells; protected WebElementFacade table_with_empty_headers; protected WebElementFacade table_with_td_headers; protected WebElementFacade alertButton; public void openAlert() { alertButton.click(); waitABit(500); } public StaticSitePageWithFacades(WebDriver driver, int timeout) { super(driver, timeout); } public void setFirstName(String value) { firstName.type(value); } public void fieldDoesNotExistShouldNotBePresent() { fieldDoesNotExist.shouldNotBePresent(); } public void fieldDoesNotExistShouldBePresent() { fieldDoesNotExist.shouldBePresent(); } public void hiddenFieldShouldNotBePresent() { hiddenField.shouldNotBePresent(); } public void fieldDoesNotExistShouldContainText(String value) { fieldDoesNotExist.shouldContainText(value); } public void waitForFirstNameField() { waitForCondition().until(firstAndLastNameAreEnabled()); } public ExpectedCondition<Boolean> firstAndLastNameAreEnabled() { return new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { return (firstName.isEnabled() && lastName.isEnabled()); } }; } public ExpectedCondition<Boolean> twoFieldsAreDisabled() { return new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { return (!buttonThatIsInitiallyEnabled.isEnabled() && !readonlyField.isEnabled()); } }; } }