From b2a32f70dcc0f8c0b6319e837c593c875d6c84d6 Mon Sep 17 00:00:00 2001 From: Radislav Date: Wed, 10 Dec 2025 13:54:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA=D0=BE=D0=B4=D0=B0:=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=B4=D0=B0=D1=80=D1=82=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20assert=20-=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BF=D1=83=D1=81=D1=82=D1=8B=D0=B5?= =?UTF-8?q?=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=20docstrings=20-=20=D0=97=D0=B0=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20raise=20AssertionError=20=D0=BD=D0=B0=20as?= =?UTF-8?q?sert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components_derived/selection_bar_component.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/components_derived/selection_bar_component.py b/components_derived/selection_bar_component.py index 52837a9..471138b 100644 --- a/components_derived/selection_bar_component.py +++ b/components_derived/selection_bar_component.py @@ -27,6 +27,7 @@ class SelectionBarComponent(BaseComponent): locator_or_text: Локатор панели выбора значения (строка или объект Locator) или текст для поиска """ + super().__init__(page) # Определяем локатор в зависимости от типа параметра @@ -47,6 +48,7 @@ class SelectionBarComponent(BaseComponent): # Действия: def clear_selections(self) -> None: """Удаление ранее выбранных значений""" + selected_values = self.get_selected_values() if len(selected_values) > 0: clear_button_locator = self.selection_bar_locator.locator( @@ -60,6 +62,7 @@ class SelectionBarComponent(BaseComponent): Returns: list[str]: Список доступных опций """ + logger.info("Getting available options from dropdown list...") # Открываем выпадающий список @@ -82,11 +85,13 @@ class SelectionBarComponent(BaseComponent): def get_selection_bar_title(self) -> str: """Возвращает название панели выбора значения""" + title_locator = self.selection_bar_locator.locator(SelectionBarLocators.TITLE_LOCATOR) return title_locator.text_content() def get_selected_values(self) -> list[str]: """Возвращает список выбранных значений""" + selected_values_locator = self.selection_bar_locator.locator( SelectionBarLocators.PARAMETERS_SELECTED ) @@ -100,6 +105,7 @@ class SelectionBarComponent(BaseComponent): field_name: Название поля для очистки field_locator: Локатор поля combobox """ + logger.info(f"Clearing combobox field '{field_name}' using close button...") # Находим поле по локатору @@ -132,6 +138,7 @@ class SelectionBarComponent(BaseComponent): def open_values_list(self) -> None: """Открытие выпадающего списка путем нажатия на панель выбора значения""" + expect(self.selection_bar_locator).to_be_visible() # Проверяем, не открыт ли уже список @@ -149,26 +156,20 @@ class SelectionBarComponent(BaseComponent): def select_value(self, name: str) -> None: """Выбор значения из списка""" + self.selected_values_list.check_item_with_text(name) self.selected_values_list.click_item_with_text(name) - def wait_for_timeout(self, timeout: int) -> None: - """Ожидает указанное количество миллисекунд. - - Args: - timeout: Время ожидания в миллисекундах - """ - self.page.wait_for_timeout(timeout) - # Проверки: - def check_field_highlighted_error(self, field_name: str, field_locator: str) -> None: + def check_field_error_highlighted(self, field_name: str, field_locator: str) -> None: """Проверяет, что поле подсвечено цветом ошибки (валидация не пройдена). Args: field_name: Название поля для проверки field_locator: Локатор поля для проверки """ + logger.info(f"Checking field '{field_name}' for error highlighting...") field_element = self.page.locator(field_locator).first @@ -183,18 +184,18 @@ class SelectionBarComponent(BaseComponent): if parent_container.count() > 0: has_error = parent_container.locator(SelectionBarLocators.ERROR_CSS_SELECTORS).count() > 0 - if not has_error: - raise AssertionError(f"Field '{field_name}' is not highlighted with error color") + assert has_error, f"Field '{field_name}' is not highlighted with error color" logger.info(f"Field '{field_name}' is correctly highlighted with error color") - def check_field_not_highlighted_error(self, field_name: str, field_locator: str) -> None: + def check_field_error_not_highlighted(self, field_name: str, field_locator: str) -> None: """Проверяет, что поле НЕ подсвечено цветом ошибки (валидация успешна). Args: field_name: Название поля для проверки field_locator: Локатор поля для проверки """ + logger.info(f"Checking field '{field_name}' for absence of error highlighting...") field_element = self.page.locator(field_locator).first @@ -205,11 +206,10 @@ class SelectionBarComponent(BaseComponent): # Ищем родительский контейнер parent_container = field_element.locator(SelectionBarLocators.INPUT_PARENT_CONTAINER).first - # Проверяем отсутствие классов ошибки с использованием локатора из SelectionBarLocators + # Проверяем отсутствие классов ошибки if parent_container.count() > 0: has_error = parent_container.locator(SelectionBarLocators.ERROR_CSS_SELECTORS).count() > 0 - if has_error: - raise AssertionError(f"Field '{field_name}' is highlighted with error") + assert not has_error, f"Field '{field_name}' is highlighted with error" logger.info(f"Field '{field_name}' correctly has no error highlighting")