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