ДЗ #1
This commit is contained in:
62
src/main/java/ru/kovbasa/pages/CoursePage.java
Normal file
62
src/main/java/ru/kovbasa/pages/CoursePage.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package ru.kovbasa.pages;
|
||||
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import ru.kovbasa.elements.Button;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
|
||||
public class CoursePage {
|
||||
|
||||
private final WebDriver driver;
|
||||
|
||||
private final By enrollButton = By.cssSelector("button[data-testid='enroll-button']");
|
||||
|
||||
public CoursePage(WebDriver driver) {
|
||||
this.driver = driver;
|
||||
}
|
||||
|
||||
public String getCourseTitle() {
|
||||
return getFirstH1();
|
||||
}
|
||||
|
||||
public String getFirstH1() {
|
||||
Document doc = Jsoup.parse(driver.getPageSource());
|
||||
return doc.select("h1")
|
||||
.stream()
|
||||
.map(e -> e.text().trim())
|
||||
.filter(t -> !t.isEmpty())
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new RuntimeException("Course title not found"));
|
||||
}
|
||||
|
||||
public LocalDate getCourseStartDate(LocalDate catalogDate) {
|
||||
Document doc = Jsoup.parse(driver.getPageSource());
|
||||
|
||||
Element dateElement = doc.selectFirst("p.sc-3cb1l3-0");
|
||||
if (dateElement == null) {
|
||||
throw new RuntimeException("Start date <p> not found on course page");
|
||||
}
|
||||
|
||||
String text = dateElement.text().trim();
|
||||
String fullDate = text + ", " + catalogDate.getYear();
|
||||
|
||||
DateTimeFormatter formatter =
|
||||
DateTimeFormatter.ofPattern("d MMMM, yyyy", Locale.forLanguageTag("ru"));
|
||||
|
||||
return LocalDate.parse(fullDate, formatter);
|
||||
}
|
||||
|
||||
public Button getEnrollButton() {
|
||||
return new Button(driver.findElement(enrollButton));
|
||||
}
|
||||
|
||||
public void clickEnroll() {
|
||||
getEnrollButton().click();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user