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 Actions action; private WebDriverWait wait ; public BasePage(WebDriver driver){ this.driver = driver; this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); } public void navigateTo(String url){ driver.get(url); } public void goToLinkText(String linkText){ driver.findElement(By.linkText(linkText)).click();; } //public static void closeBrowser(){ // driver.quit(); //} public void navigationBack() { driver.navigate().back(); } public String getCurrentUrl() { return driver.getCurrentUrl(); } private WebElement Find(String locator){ return wait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))); // return wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(locator))); //return driver.findElement(By.xpath(locator)); } public void clickElement(String locator){ Find(locator).click(); } public void submitElement(String locator){ Find(locator).submit(); } public void write(String locator, String textToWrite){ Find(locator).clear(); Find(locator).sendKeys(textToWrite); } 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 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; } } } }