package pages; import java.time.Duration; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.Select; import org.openqa.selenium.support.ui.WebDriverWait; public class BasePage { private WebDriver driver; private WebDriverWait wait; private Actions action; public BasePage(WebDriver driver) { this.driver = driver; this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); } /* METODOS */ protected WebElement find(String locator) { return wait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))); } public WebElement findByCSS(String locator) { return wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(locator))); } public void clickElement(String locator) { find(locator).click(); } public void write(String locator, String text) { find(locator).clear(); find(locator).sendKeys(text); } public void goToLinkText(String linkText) { find(linkText).click(); } public void submitElement(String locator) { find(locator).submit(); } public int dropdownSize(String locator) { Select dropdown = new Select(find(locator)); List dropdownOptions = dropdown.getOptions(); return dropdownOptions.size(); } public void selectFromDropdownByValue(String locator, String valueToSelect) { Select dropdown = new Select(find(locator)); dropdown.selectByValue(valueToSelect); } public void selectFromDropdownByIndex(String locator, int valueToSelect) { Select dropdown = new Select(find(locator)); dropdown.selectByIndex(valueToSelect); } public void selectFromDropdownByText(String locator, String valueToSelect) { Select dropdown = new Select(find(locator)); dropdown.selectByVisibleText(valueToSelect); } public void hoverOverElement(String locator) { action.moveToElement(find(locator)); } public void doubleClick(String locator) { action.doubleClick(find(locator)); } public void rightClick(String locator) { action.contextClick(find(locator)); } public String getValueFromTable(String locator, int row, int column) { String cellINeed = locator + "/table/tbody/tr[" + row + "]/td[" + column + "]"; return find(cellINeed).getText(); } public void setValueOnTable(String locator, int row, int column, String stringToSend) { String cellToFill = locator + "/table/tbody/tr[" + row + "]/td[" + column + "]"; find(cellToFill).sendKeys(stringToSend); } public String getTitle() { return driver.getTitle(); } public void switchToiFrame(int iFrameIndex) { driver.switchTo().frame(iFrameIndex); } public void switchToParentFrame() { driver.switchTo().parentFrame(); } public void dismissAlert() { try { driver.switchTo().alert().dismiss(); } catch (NoAlertPresentException e) { e.printStackTrace(); } } public String errorFromPlaceHolder(String locator) { return find(locator).getAttribute("placeholder"); } public String textFromElement(String locator) { return find(locator).getText(); } public boolean elementEnabled(String locator) { return find(locator).isEnabled(); } public boolean elementIsDisplayed(String locator) { return find(locator).isDisplayed(); } public boolean elementIsSelected(String locator) { return find(locator).isSelected(); } public List bringMeAllElements(String locator) { return driver.findElements(By.className(locator)); } public void selectNthElementFromList(String locator, int index) { List list = driver.findElements(By.className(locator)); list.get(index).click(); } public void dragAndDrop(String locator, String locator2) { WebElement element = find(locator); WebElement element2 = find(locator2); action.dragAndDrop(element, element2).build().perform(); } public void selectCriteriaFromList(String locator, String criteria) { List list = driver.findElements(By.className(locator)); for (WebElement element : list) { if (element.getText().equals(criteria)) { element.click(); break; } } } }