Tests/tests/ui/pages/admin_page.py
2026-01-19 23:32:11 +04:00

134 lines
6.4 KiB
Python
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.

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)