examples/src/main/java/pages/ViewPage.java
2026-08-10 14:29:38 +03:00

68 lines
3.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package pages;
import io.qameta.allure.Step;
import models.Ticket;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
/** Страница просмотра карточки тикета (неавторизированный пользователь) */
public class ViewPage extends HelpdeskBasePage {
// Способ объявления и инициализации элементов страницы через driver.findElement(locator)
/* Инициализация сразу при объявлении элемента.
Элемент должен присутствовать на странице браузера в момент создания объекта страницы new ViewPage() */
private WebElement queue = driver.findElement(By.xpath("//th[contains(text(), 'Queue:')]"));
private WebElement email = driver.findElement(By.xpath("//th[text()='Submitter E-Mail']/following-sibling::td[1]"));
private WebElement priority = driver.findElement(By.xpath("//th[text()='Priority']/following-sibling::td[1]"));
// Пример поиска description, используя промежуточный элемент descriptionLabel
private WebElement descriptionLabel = driver.findElement(By.xpath("//th[text()='Description']"));
// Поиск элемента можно выполнять не только относительно driver, но и относительно другого элемента
private WebElement description = descriptionLabel.findElement(By.xpath("./parent::*/following-sibling::tr[1]"));
/* Поиск элемента по локатору.
Используется для элементов, которых нет на странице браузера в момент создания объекта страницы,
так как локатор может быть объявлен и проинициализирован до появления элемнета на странице. */
private By captionLocator = By.xpath("//table/caption");
private WebElement caption;
public ViewPage() {
// В данном случае инициализация через PageFactory не нужна,
// но можем проинициализировать элементы по локаторам (если элементы отображаются)
caption = driver.findElement(captionLocator);
}
@Step("Проверить значение полей на карточке тикета")
public ViewPage checkTicket(Ticket ticket) {
Assert.assertTrue(getTicketTitle().contains(ticket.getTitle()), "Имя тикета не соответствует");
// todo: добавить проверки
return this;
}
@Step("Получить заголовок тикета")
public String getTicketTitle() {
// Если элемент появляется не сразу, можно выполнить ожидание по условию
// условие видимости при поиске по локатору
ExpectedCondition<WebElement> condition = ExpectedConditions.visibilityOfElementLocated(captionLocator);
// поиск с ожиданием по условию
WebElement ticketTitle = new WebDriverWait(driver, 5).until(condition);
return ticketTitle.getText();
}
@Step("Сохранить id тикета в объект")
public void saveId(Ticket ticket) {
String captionText = caption.getText();
String id = captionText.substring(captionText.indexOf("-") + 1, captionText.indexOf("]"));
ticket.setId(Integer.parseInt(id));
}
}