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")