Задание было такое что надо проверить авторизацию на платформе, далее скачать PDF файл и в нем найти совпадение по тексту, тест зависает на скачивании файла, не могу понять в чем дело
Код
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.logevents.SelenideLogger;
import io.qameta.allure.Step;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import static com.codeborne.selenide.Condition.visible;
import static com.codeborne.selenide.Selenide.*;
public class Kpfu {
@Before
public void setUp() {
// добавляем слушателя AllureSelenide
SelenideLogger.addListener("AllureSelenide", new AllureSelenide().screenshots(true).savePageSource(false));
}
@After
public void tearDown() {
// удаляем слушателя AllureSelenide
SelenideLogger.removeListener("AllureSelenide");
}
@Test
public void testKpfu() throws IOException {
open("http://kpfu.ru");
$x("//div[@class='service-links']//a[@class ='lk-link']").click();
login();
documentsSection();
downloadDocument();
openFilesTab();
downloadPdf();
}
@Step("Вводим логин и пароль")
private void login() {
$x("//div[@class='modal_body']//input[@name ='p_login']").setValue("SOIgnatev@stud.kpfu.ru");
$x("//div[@class='modal_body']//input[@type ='password']").setValue("kngowjn5x");
$x("//div[@class='modal_body']//input[@type ='submit']").click();
}
@Step("Переходим в раздел 'Документы'")
private void documentsSection() {
$x("//div[@class='left-half']//a[@href='SITE_STUDENT_SH_PR_AC.offor_document?p_menu=14&p_type_menu_open=151#tab151']").click();
}
@Step("Переходим в подраздел документов")
private void downloadDocument() {
$x("//div[@class='container clearfix']//a[@href='SITE_STUDENT_SH_PR_AC.download_document?p_menu=16']").click();
}
@Step("Открываем вкладку 'Файлы'")
private void openFilesTab() {
$x("//div[@class='left mCustomScrollbar _mCS_1 mCS_no_scrollbar']//a[@href='#tab2']").click();
}
@Step("Кликаем на ссылку для скачивания PDF-файла")
private void downloadPdf() throws IOException {
// Ожидаем появления элемента
$("a.download").shouldBe(visible);
// Кликаем на ссылку для скачивания PDF-файла
$("a.download").click();
String fileName = $("a.download").download().getName();
// Открываем скачанный файл
PDDocument document = PDDocument.load(new File(fileName));
// Проверяем наличие заголовка "ОБУЧАЮЩИМСЯ"
PDDocument firstPage = document;
String text = new PDFTextStripper().getText(firstPage);
if (!text.contains("ОБУЧАЮЩИМСЯ")) {
throw new AssertionError("Заголовок 'ОБУЧАЮЩИМСЯ' не найден в PDF файле");
}
// Закрываем документ
document.close();
}
}
Поначалу думал дело в том, что элемент не успевает появляться на странице, добавил метод shoulbe(visible), но все равно безрезультатно
Выдает вот такую ошибку
Element should be visible {a.download}
Element: ‘’
Actual value: hidden