package com.framework.site.objects.header; import com.framework.asserts.JAssertion; import com.framework.driver.event.HtmlElement; import com.framework.driver.objects.AbstractWebObject; import com.framework.site.objects.header.interfaces.Header; import com.google.common.base.Optional; import org.openqa.selenium.By; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static com.framework.utils.datetime.TimeConstants.FIVE_SECONDS; import static org.hamcrest.Matchers.is; /** * Created with IntelliJ IDEA ( LivePerson : www.liveperson.com ) * * Package: com.framework.site.objects.header * * Name : HeaderSubscribeObject * * User : solmarkn / Dani Vainstein * * Date : 2015-01-06 * * Time : 10:08 */ class HeaderSubscribeObject extends AbstractWebObject implements Header.HeaderSubscribe { //region HeaderSubscribeObject - Variables Declaration and Initialization Section. private static final Logger logger = LoggerFactory.getLogger( HeaderSubscribeObject.class ); //endregion //region HeaderSubscribeObject - Constructor Methods Section HeaderSubscribeObject( final HtmlElement rootElement ) { super( rootElement, Header.HeaderSubscribe.LOGICAL_NAME ); initWebObject(); } //endregion //region HeaderSubscribeObject - Initialization and Validation Methods Section @Override protected void initWebObject() { logger.debug( "validating static elements for web object id: <{}>, name:<{}>...", getQualifier(), getLogicalName() ); final String REASON = "assert that element \"%s\" exits"; JAssertion assertion = getRoot().createAssertion(); Optional<HtmlElement> e = getRoot().childExists( By.id( "emailOnlyForm" ), FIVE_SECONDS ); assertion.assertThat( String.format( REASON, "#emailOnlyForm" ), e.isPresent(), is( true ) ); } //endregion //region HeaderSubscribeObject - Service Methods Section private HtmlElement getRoot() { return getBaseRootElement( Header.HeaderSubscribe.ROOT_BY ); } //endregion //region HeaderSubscribeObject - Business Methods Section @Override public boolean isDisplayed() { return getRoot().isDisplayed(); } @Override public void subscribe( final String email, final boolean waitAlert ) { } //endregion //region HeaderSubscribeObject - Element Finder Methods Section /** * Full xpath : {@code /html/body/div[4]/div[1]/div[1]/div[1]/div[4]/div/form} * Short xpath : {@code //*[@id='emailOnlyForm']} * Css selector: {@code form#emailOnlyForm} * * @return The {@linkplain org.openqa.selenium.WebElement} */ private HtmlElement getSubscribeForm() { return getRoot().findElement( By.id( "emailOnlyForm" ) ); } /** * Full xpath : {@code /html/body/div[4]/div[1]/div[1]/div[1]/div[4]/div/form/input[6]} * Short xpath : {@code //input[@id='email']} * Css selector: {@code form#emailOnlyForm input#email.email.white} * * @return The {@linkplain org.openqa.selenium.WebElement} */ private HtmlElement getEmailInput() { return getSubscribeForm().findElement( By.cssSelector( "input#email.email.white" ) ); } /** * Full xpath : {@code /html/body/div[4]/div[1]/div[1]/div[1]/div[4]/div/form/a} * Css selector: {@code form#emailOnlyForm a#submit.email-subscribe-submit-btn} * * @return The {@linkplain org.openqa.selenium.WebElement} */ private HtmlElement getEmailSubmitAnchor() { return getSubscribeForm().findElement( By.id( "submit" ) ); } /** * Full xpath : {@code /html/body/div[4]/div[1]/div[1]/div[1]/div[4]/div/a} * Css selector: {@code div#ccl-refresh-header div.header-nav div.header-subscribe div.max-width a.close} * * @return The {@linkplain org.openqa.selenium.WebElement} */ private HtmlElement getCloseAnchor() { return getRoot().findElement( By.className( "close" ) ); } //endregion }