Untitled

 avatar
unknown
plain_text
2 years ago
6.3 kB
45
Indexable
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.junit.After;
import org.junit.Test;

// Класс страницы авторизации
class LoginPageMesto {

    private WebDriver driver;
    private By emailField = By.id("email");
    private By passwordField = By.id("password");
    private By signInButton = By.className("auth-form__button");

    public LoginPageMesto(WebDriver driver){
        this.driver = driver;
    }

    public void setUsername(String username) {
        driver.findElement(emailField).sendKeys(username);
    }
    public void setPassword(String password) {
        driver.findElement(passwordField).sendKeys(password);
    }
    public void clickSignInButton() {
        driver.findElement(signInButton).click();
    }
    public void login(String username, String password){
        setUsername(username);
        setPassword(password);
        clickSignInButton();
    }
}

// Класс главной страницы
class HomePageMesto {

    private WebDriver driver;

    private By profileTitle = By.className("profile__title");
    // создай локатор для кнопки редактирования профиля
    private By editProfileButton = By.className("profile__edit-button");

    // создай локатор для поля «Занятие» в профиле пользователя
    private By activity = By.className("profile__description");

    public HomePageMesto(WebDriver driver) {
        this.driver = driver;
    }

    // метод ожидания прогрузки данных профиля
    public void waitForLoadProfileData() {
        new WebDriverWait(driver, 10).until(driver -> (driver.findElement(profileTitle).getText() != null
                && !driver.findElement(profileTitle).getText().isEmpty()
        ));
    }
    // метод для нажатия на кнопку редактирования профиля

    public void clickEditProfileButton(){
        driver.findElement(editProfileButton).click();
    }

    public void waitForChangedActivity(String changed) {
        WebDriverWait wait = new WebDriverWait(driver, 10);
        By elem_dynamic = activity;
        wait.until(ExpectedConditions.presenceOfElementLocated(elem_dynamic));
    }
}

// Класс cтраницы редактирования профиля
class ProfilePageMesto {

    private WebDriver driver;
    // создай локатор для поля «Занятие» в профиле пользователя
    private By activity = By.id("owner-description");
    // создай локатор для кнопки «Сохранить» в профиле пользователя
    private By save = By.xpath(".//button[@class='button popup__button' and text()='Сохранить']");

    public ProfilePageMesto (WebDriver driver){
        this.driver = driver;
    }

    // метод для проверки открытости поля «Занятие», удаления текста из неё и ввода нового значения из параметра
    public void renameProfileActivity(String newActivity){
        Assert.assertTrue(driver.findElement(activity).isEnabled());
        driver.findElement(activity).clear();
        driver.findElement(activity).sendKeys(newActivity);
    }

    // метод для нажатия на кнопку сохранения профиля
    public void clickSaveProfileButton(){
        driver.findElement(save).click();
    }
}



    // Класс с автотестом
    public class Praktikum {

        private WebDriver driver;

        @Test
        public void checkActivity() {
            // драйвер для браузера Chrome
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--no-sandbox", "--headless", "--disable-dev-shm-usage");
            driver = new ChromeDriver(options);
            // переход на страницу тестового приложения
            driver.get("https://qa-mesto.praktikum-services.ru/");

            // создай объект класса страницы авторизации
            LoginPageMesto objLoginPage = new LoginPageMesto(driver);
            // выполни авторизацию
            objLoginPage.login("ЛОГИН",
                    "ПАРОЛЬ");

            // создай объект класса главной страницы приложения
            HomePageMesto objHomePage = new HomePageMesto(driver);
            // дождись загрузки данных профиля на главной странице
            objHomePage.waitForLoadProfileData();

            // кликни на кнопку редактирования профиля
            objHomePage.clickEditProfileButton();

            // создай объект класса для поп-апа редактирования профиля
            ProfilePageMesto objProfilePage = new ProfilePageMesto(driver);

            // это переменная со значением, которое надо ввести в поле «Занятие»
            String newActivity = "Тестировщик";
            // в одном шаге проверь, что поле «Занятие» доступно для редактирования, и введи в него новое значение
            objProfilePage.renameProfileActivity(newActivity);
            // сохрани изменения в профиле
            objProfilePage.clickSaveProfileButton();
            // проверь, что поле «Занятие» на основной странице поменяло значение на новое
            objHomePage.waitForChangedActivity(newActivity);
        }


        @After
        public void teardown() {
            // Закрой браузер
        driver.quit();
        }
    }
Editor is loading...