import allure from selenium.webdriver.chrome.webdriver import WebDriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from tests.ui.pages.base_page import BasePage class AdminPage(BasePage): # Локаторы # Логин LOGIN_BLOCK = (By.XPATH, "//div[contains(@id, 'operations-user-post_login')]//button[contains(@class, 'opblock-summary-control')]") LOGIN_TRYITOUT_BTN = (By.XPATH, "//div[contains(@id, 'operations-user-post_login')]//button[contains(@class, 'try-out__btn')]") LOGIN_TEXTAREA = (By.XPATH, "//div[contains(@id, 'operations-user-post_login')]//textarea[contains(@class, 'body-param__text')]") LOGIN_EXECUTE_BTN = (By.XPATH, "//div[contains(@id, 'operations-user-post_login')]//button[contains(@class, 'execute')]") LOGIN_STATUS_CODE = (By.XPATH, "//div[contains(@id, 'operations-user-post_login')]//table[contains(@class, 'live-responses-table')]//tbody//td[contains(@class, 'response-col_status')]") # Пользователь USER_BLOCK = (By.XPATH, "//div[contains(@id, 'operations-user-post_team_')]//button[contains(@class, 'opblock-summary-control')]") USER_TRYITOUT_BTN = (By.XPATH, "//div[contains(@id, 'operations-user-post_team_')]//button[contains(@class, 'try-out__btn')]") USER_TEXTAREA = (By.XPATH, "//div[contains(@id, 'operations-user-post_team_')]//textarea[contains(@class, 'body-param__text')]") USER_EXECUTE_BTN = (By.XPATH, "//div[contains(@id, 'operations-user-post_team_')]//button[contains(@class, 'execute')]") USER_RESPONSE = (By.XPATH, "//div[contains(@id, 'operations-user-post_team_')]//table[contains(@class, 'live-responses-table')]//tbody//td[contains(@class, 'response-col_description')]//code") USER_STATUS_CODE = (By.XPATH, "//div[contains(@id, 'operations-user-post_team_')]//table[contains(@class, 'live-responses-table')]//tbody//td[contains(@class, 'response-col_status')]") # Данные для входа LOGIN_DATA = [Keys.BACKSPACE, Keys.ENTER, '\t"password": "Abc1205",', Keys.ENTER, '\t"username": "muts"', Keys.ENTER, '}'] USER_RAW_DATA = """ "avatar": "🔍", "description": "QA‑инженер с фокусом на автоматизированное тестирование и CI/CD.", "joinDate": "2023-10-01T20:00:00Z", "motto": "Тестирование — это поиск истины.", "name": "Андрей Васильев", "password": "TestPas1205", "projects": ["Web App Testing", "API Automation"], "role": "QA Engineer", "skills": ["Selenium", "JUnit", "Postman", "CI/CD", "TestRail"], "speciality": "Good user", "username": "andrey_user" } """ USER_DATA = [Keys.BACKSPACE, USER_RAW_DATA] def __init__(self, driver: WebDriver): super().__init__(driver) @allure.step('Открытие страницы администратора') def open_admin_page(self): self.open('http://localhost:8080/swagger/index.html') @allure.step('Проверка наличия блока логина') def is_login_block_visible(self): return self.is_visible(self.LOGIN_BLOCK) @allure.step('Проверка наличия кнопки "try it out"') def is_login_tryitout_btn_visible(self): return self.is_visible(self.LOGIN_TRYITOUT_BTN) @allure.step('Проверка наличия поля ввода') def is_login_textarea_visible(self): return self.is_visible(self.LOGIN_TEXTAREA) @allure.step('Проверка наличия кнопки выполнения запроса') def is_login_execute_btn_visible(self): return self.is_visible(self.LOGIN_EXECUTE_BTN) @allure.step('Нажатие на блок логина') def click_login_block(self): self.click(self.LOGIN_BLOCK) @allure.step('Нажатие на кнопку "try it out"') def click_login_tryitout_btn(self): self.click(self.LOGIN_TRYITOUT_BTN) @allure.step('Ввод текста в поле логина') def enter_text_to_login_textarea(self, text: list): field = self.find_element(self.LOGIN_TEXTAREA) field.clear() for event in text: field.send_keys(event) @allure.step('Нажатие на кнопку выполнения запроса') def click_login_execute_btn(self): self.click(self.LOGIN_EXECUTE_BTN) @allure.step('Получение статуса выполнения входа') def get_login_status(self): return self.get_text(self.LOGIN_STATUS_CODE) @allure.step('Проверка наличия блока пользователя') def is_user_block_visible(self): return self.is_visible(self.USER_BLOCK) @allure.step('Проверка наличия кнопки "try it out"') def is_user_tryitout_btn_visible(self): return self.is_visible(self.USER_TRYITOUT_BTN) @allure.step('Проверка наличия поля ввода') def is_user_textarea_visible(self): return self.is_visible(self.USER_TEXTAREA) @allure.step('Проверка наличия кнопки выполнения запроса') def is_user_execute_btn_visible(self): return self.is_visible(self.USER_EXECUTE_BTN) @allure.step('Нажатие на блок пользователя') def click_user_block(self): self.click(self.USER_BLOCK) @allure.step('Нажатие на кнопку "try it out"') def click_user_tryitout_btn(self): self.click(self.USER_TRYITOUT_BTN) @allure.step('Ввод текста в поле добавления пользователя') def enter_text_to_user_textarea(self, text: list): field = self.find_element(self.USER_TEXTAREA) field.clear() for event in text: field.send_keys(event) @allure.step('Нажатие на кнопку выполнения запроса') def click_user_execute_btn(self): self.click(self.USER_EXECUTE_BTN) @allure.step('Получение ответа на запрос создания пользователя') def get_user_response(self): elem = self.find_element(self.USER_RESPONSE) return elem.get_attribute('innerText') @allure.step('Получение статуса создания пользователя') def get_user_status(self): return self.get_text(self.USER_STATUS_CODE)