package com.constellio.app.ui.tools; import java.util.List; import org.openqa.selenium.By; import com.constellio.app.ui.framework.buttons.AddButton; import com.constellio.app.ui.framework.buttons.DeleteButton; import com.constellio.app.ui.framework.buttons.EditButton; import com.constellio.app.ui.framework.components.BaseForm; import com.constellio.app.ui.tools.components.basic.TextFieldWebElement; import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebDriver; import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebElement; public abstract class PageHelper { protected final ConstellioWebDriver driver; protected PageHelper(ConstellioWebDriver driver) { this.driver = driver; } public String getTitle() { return driver.findRequiredElement(By.className("h1")).getText(); } public String getErrorMessage() { return getErrorMessage(true); } public String getErrorMessage(boolean dismissMessage) { ConstellioWebElement message = driver.findRequiredElement(By.className("error")); String result = message.getText(); if (dismissMessage) { message.click(); } return result; } public String getWarningMessage() { return getWarningMessage(true); } public String getWarningMessage(boolean dismissMessage) { ConstellioWebElement message = driver.findRequiredElement(By.className("warning")); String result = message.getText(); if (dismissMessage) { message.click(); } return result; } public void waitForPageReload() { int timeoutInSeconds = 2; String lastPageDateString = driver.getPageLoadTimeAsString(100); driver.waitForPageReload(timeoutInSeconds, lastPageDateString); } public void logout() { getButtonByClassName("v-menubar-menuitem-user-settings").click(); getButtonByClassName("v-menubar-menuitem-disconnect-item").clickAndWaitForPageReload(); } public ButtonWebElement getButtonByClassName(String className) { return getButtonByClassName(className, 0); } public ButtonWebElement getButtonByClassName(String className, int index) { ConstellioWebElement element = driver.findAdaptElements(By.className(className)).get(index); element.scrollIntoView(); return new ButtonWebElement(element); } public ButtonWebElement getFirstButtonByClassName(String className) { return getButtonByClassName(className, 0); } public ButtonWebElement getBackButton() { ConstellioWebElement element = driver.findRequiredElement(By.className("back-button")); element.scrollIntoView(); return new ButtonWebElement(element); } public TextFieldWebElement getTextFieldWebElementById(String id) { ConstellioWebElement textFieldElement = driver.findElement(By.id(id)); textFieldElement.scrollIntoView(); return new TextFieldWebElement(textFieldElement); } public OptionGroupWebElement getOptionGroupWebElementById(String id) { ConstellioWebElement optionGroupElement = driver.findElement(By.id(id)); optionGroupElement.scrollIntoView(); return new OptionGroupWebElement(optionGroupElement); } public ButtonWebElement getOkConfirmationDialogButton() { String id = "confirmdialog-ok-button"; driver.waitUntilElementExist(By.id(id)); return getButtonById(id); } public ButtonWebElement getCancelConfirmationDialogButton() { return getButtonById("confirmdialog-cancel-button"); } public ButtonWebElement getButtonById(String id) { ConstellioWebElement element = driver.findElement(By.id(id)); return new ButtonWebElement(element); } public ButtonWebElement getCancelButton() { return getButtonByClassName(BaseForm.CANCEL_BUTTON, 0); } public ButtonWebElement getSaveButton() { return getButtonByClassName(BaseForm.SAVE_BUTTON, 0); } public List<ConstellioWebElement> findEditButtonElements() { return driver.findAdaptElements(By.className(EditButton.BUTTON_STYLE)); } public List<ConstellioWebElement> findAddButtonElements() { return driver.findAdaptElements(By.className(AddButton.BUTTON_STYLE)); } public List<ConstellioWebElement> findDeleteButtonElements() { return driver.findAdaptElements(By.className(DeleteButton.BUTTON_STYLE)); } }