package org.lightadmin.page; import org.apache.commons.lang3.ArrayUtils; import org.lightadmin.SeleniumContext; import org.lightadmin.util.WebElementTransformer; import org.openqa.selenium.By; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import static org.junit.Assert.fail; public class ShowViewPage extends SecuredPage<ShowViewPage> { private String domainName; private int itemId; @FindBy( id = "data-section" ) WebElement dataContainer; @FindBy( xpath = "//a[@title='Edit']" ) WebElement editButton; protected ShowViewPage( SeleniumContext seleniumContext, String domainName, int itemId ) { super( seleniumContext ); this.domainName = domainName; this.itemId = itemId; } @Override protected void load() { webDriver().get( baseUrl().toString() + "/domain/" + domainName + "/" + itemId ); } @Override protected void isLoaded() throws Error { try { webDriver().waitForElementVisible( dataContainer ); } catch ( TimeoutException e ) { fail( "Fields are not displayed on ShowViewPage" ); } try { webDriver().waitForElementVisible( editButton ); } catch ( TimeoutException e ) { fail( "Edit button is not displayed on ShowViewPage" ); } } public String[] getFieldValuesExcludingId() { String[] allFieldValues = WebElementTransformer.transformToArray( dataContainer.findElements( By.xpath( "//td[contains(@name, 'field-')]" ) ) ); return ArrayUtils.remove( allFieldValues, 0 ); } public WebElement getField( String fieldName ) { return dataContainer.findElement( By.name( "field-" + fieldName ) ); } }