package com.autonomy.abc.selenium.find.preview; import com.hp.autonomy.frontend.selenium.util.AppElement; import com.hp.autonomy.frontend.selenium.util.AppPage; import com.hp.autonomy.frontend.selenium.util.ParametrizedFactory; import com.hp.autonomy.frontend.selenium.util.Waits; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class DetailedPreviewPage extends AppElement implements AppPage { private DetailedPreviewPage(final WebDriver driver){ super(new WebDriverWait(driver,30).until(ExpectedConditions.visibilityOfElementLocated(By.className("find-pages-container"))),driver); } @Override public void waitForLoad() { new WebDriverWait(getDriver(),30).until(ExpectedConditions.visibilityOfElementLocated(By.className("find-pages-container"))); } //navigation public void openOriginalDoc(){ findElement(By.cssSelector(".document-detail-service-view-container .document-detail-open-original-link")).click(); Waits.loadOrFadeWait(); } public String originalDocLink() { return findElement(By.className("document-detail-open-original-link")).getAttribute("href"); } public void goBackToSearch(){findElement(By.className("detail-view-back-button")).click();} //elements public WebElement loadingIndicator(){ return findElement(By.className("loading-spinner")); } public WebElement frame(){ return findElement(By.tagName("iframe")); } public boolean frameExists() { return !findElements(By.tagName("iframe")).isEmpty(); } public WebElement similarDatesTab(){ return findElement(By.xpath("//span[contains(text(),'Similar dates')]")); } public WebElement similarDocsTab(){ return findElement(By.xpath("//span[contains(text(),'Similar documents')]")); } public boolean locationTabExists() { return findElements( By.xpath("//ul[contains(@class,'document-detail-tabs')]//span[contains(text(),'Location')]")).size()>0; } public WebElement ithTick(final int i){ final String tickPercent = String.valueOf((i-1)*10); return findElement(By.xpath("//div[contains(@class,'slider-tick') and contains(@style,'left: "+tickPercent+"%')]")); } public String getSimilarDatesSummary(){ return findElement(By.className("similar-dates-summary")).getText(); } public int numberOfHeadersWithDocTitle(){ final String title = getTitle(); return findElements(By.xpath("//h1[contains(text(),'" + title + "')]")).size(); } //metadata public String getTitle(){ return getField("Title");} public String getReference(){ return getField("Reference");} public String getIndex() { return getField("Index");} public String getDatabase(){return getField("Database");} public String getSummary(){ return getField("Summary");} public String getDate(){ return getField("Date");} public String getAuthor() { return getField("Authors");} private String getField(final String name) { try { return findElement(By.xpath(".//th[contains(text(), '" + name + "')]/following::td")).getText(); } catch (final NoSuchElementException e) { return null; } } public static class Factory implements ParametrizedFactory<WebDriver, DetailedPreviewPage> { @Override public DetailedPreviewPage create(final WebDriver context) { return new DetailedPreviewPage(context); } } }