package grant; import core.PageObject; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.Select; import java.util.List; public class GrantPage extends PageObject { @Override public String getSubTitle() { return driver.findElement(By.tagName("h2")).getText(); } public String getId() { return driver.findElement(By.id("id")).getAttribute("value"); } public void setTitle(String name) { driver.findElement(By.id("title")).clear(); driver.findElement(By.id("title")).sendKeys(name); } public String getTitle() { return driver.findElement(By.id("title")).getAttribute("value"); } public void setDeadline(String date, Integer i, String description) { driver.findElement(By.id(String.format("deadlines%d.date", i))).sendKeys(date); driver.findElement(By.id(String.format("deadlines%d.description", i))).sendKeys(description); } public void setLeader() { WebElement webElement = driver.findElement(By.id("leaderId")); Select selectLeader = new Select(webElement); selectLeader.selectByVisibleText("Романов"); } public void saveGrant() { driver.findElement(By.id("sendMessageButton")).click(); } public boolean checkBlankFields() { return driver.findElements(By.className("alert-danger")).size() > 0; } public List getAttachedPapers() { try { return driver.findElement(By.className("div-selected-papers")).findElements(By.tagName("div")); } catch (Exception ex) { return null; } } public List attachPaper() { WebElement selectPapers = driver.findElement(By.id("allPapers")); Select select = new Select(selectPapers); List selectedOptions = select.getAllSelectedOptions(); List allOptions = select.getOptions(); if (selectedOptions.size() >= allOptions.size()) { for (int i = 0; i < allOptions.size(); i++) { if (!allOptions.get(i).equals(selectedOptions.get(i))) { select.selectByVisibleText(allOptions.get(i).getText()); selectedOptions.add(allOptions.get(i)); return selectedOptions; } } } else { select.selectByVisibleText(allOptions.get(0).getText()); selectedOptions.add(allOptions.get(0)); return selectedOptions; } return null; } public List deletePaper() { WebElement selectPapers = driver.findElement(By.id("allPapers")); Select select = new Select(selectPapers); select.deselectByVisibleText(select.getFirstSelectedOption().getText()); return select.getAllSelectedOptions(); } public List getDeadlineList() { return driver.findElements(By.id("deadlines")); } public Integer getDeadlineCount() { return getDeadlineList().size(); } public void addDeadline() { driver.findElement(By.id("addDeadline")).click(); } public boolean checkDeadline(String description, String dateValue) { return getDeadlineList() .stream() .anyMatch(webElement -> { return webElement.findElement(By.className("div-deadline-description")).findElement( By.tagName("input")).getAttribute("value").equals(description) && webElement.findElement(By.className("form-deadline-date")).getAttribute("value").equals(dateValue); }); } public void deleteDeadline() { driver.findElements(By.className("btn-delete-deadline")).get(0).click(); } public List addAuthor() { WebElement selectAuthors = driver.findElement(By.id("authors")); Select select = new Select(selectAuthors); List selectedOptions = select.getAllSelectedOptions(); List allOptions = select.getOptions(); int i = 0; while (i < selectedOptions.size()) { if (!allOptions.get(i).equals(selectedOptions.get(i))) { select.selectByVisibleText(allOptions.get(i).getText()); selectedOptions.add(allOptions.get(i)); return selectedOptions; } else { i++; } } if (selectedOptions.size() != allOptions.size()) { select.selectByVisibleText(allOptions.get(i).getText()); selectedOptions.add(allOptions.get(i)); } return selectedOptions; } public void deleteAuthor() { WebElement selectAuthors = driver.findElement(By.id("authors")); Select select = new Select(selectAuthors); List selectedOptions = select.getAllSelectedOptions(); if (selectedOptions.size() != 0) { select.deselectByVisibleText(selectedOptions.get(0).getText()); } } public void setDescription(String description) { driver.findElement(By.id("comment")).clear(); driver.findElement(By.id("comment")).sendKeys(description); } public String getDescription() { return driver.findElement(By.id("comment")).getText(); } }