This commit is contained in:
2026-02-14 01:35:11 +03:00
commit 895bea43d2
27 changed files with 1210 additions and 0 deletions

View 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();
}
}