From 76559e1402afad297eeddafb8515cc6b149d541f Mon Sep 17 00:00:00 2001 From: Alena Krauch Date: Thu, 5 Jun 2025 15:07:40 +0300 Subject: [PATCH] update groups_page.py, groups_page_locators.py, base_page.py, conftest.py --- locators/groups_page_locators.py | 2 +- pages/base_page.py | 14 +++++++++++++- pages/groups_page.py | 2 +- tests/conftest.py | 21 ++++++++++++++++++--- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/locators/groups_page_locators.py b/locators/groups_page_locators.py index de07029f0c..83136a508d 100644 --- a/locators/groups_page_locators.py +++ b/locators/groups_page_locators.py @@ -17,7 +17,7 @@ class GroupsPageLocators: # PAGE_TILES = (By.XPATH, "//ol/li") PAGE_TILES = (By.CSS_SELECTOR, ".list-item") PAGE_TITLE = (By.TAG_NAME, "h3") - PAGE_SUBTITLES = (By.TAG_NAME, "h4") + PAGE_SUBTITLES = (By.XPATH, "//button/h4") class HeaderLocators: diff --git a/pages/base_page.py b/pages/base_page.py index 0b87b8c625..67c0814689 100644 --- a/pages/base_page.py +++ b/pages/base_page.py @@ -54,11 +54,23 @@ def elements_are_present(self, locator): return Wait(self.driver, self.timeout).until( ec.presence_of_all_elements_located(locator), message=f"Can't find elements by locator {locator}") - def elements_are_visible(self, locator): + def elements_are_visible1(self, locator): return Wait(self.driver, self.timeout).until( ec.visibility_of_all_elements_located(locator), message=f"Can't find elements by locator {locator}") + def elements_are_visible(self, locator, timeout=10): + try: + return Wait(self.driver, timeout).until(ec.visibility_of_all_elements_located(locator)) + except TimeoutException: + raise TimeoutException(f"Elements have not become visible at locator {locator} within {timeout} seconds") + + def elements_are_located(self, locator, timeout=10): + try: + return Wait(self.driver, timeout).until(ec.presence_of_all_elements_located(locator)) + except TimeoutException: + raise TimeoutException(f"Elements were not found at locator {locator} within {timeout} seconds") + def go_to_element(self, element): return self.driver.execute_script("arguments[0].scrollIntoView({ block: 'center'});", element) diff --git a/pages/groups_page.py b/pages/groups_page.py index c9d2e63f68..bdf265af58 100644 --- a/pages/groups_page.py +++ b/pages/groups_page.py @@ -168,7 +168,7 @@ def check_links_clickability(self): @allure.step("Get attribute 'title' of links on the 'ru' local") def get_links_titles_ru(self): elements = self.get_list_of_links() - WebDriverWait(self.driver, 10).until(ec.visibility_of_all_elements_located(self.locators.PAGE_IMAGES)) + # WebDriverWait(self.driver, 10).until(ec.visibility_of_all_elements_located(self.locators.PAGE_IMAGES)) return [element.get_attribute('title') for element in elements] @allure.step("Get attribute 'title' of links on the 'en' local") diff --git a/tests/conftest.py b/tests/conftest.py index ad9e5fd92d..80a8349db8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,6 +4,7 @@ import allure import pytest from dotenv import load_dotenv +from selenium.webdriver.support.wait import WebDriverWait from locators.contacts_page_locators import ContactsPageLocators from locators.contributors_page_locators import ContributorsPageLocators @@ -12,12 +13,10 @@ from locators.login_page_locators import LoginPageLocators from locators.main_page_locators import MainPageLocators from locators.start_unauthorized_page_locators import StartUnauthorizedPageLocators - from pages.base_page import BasePage from pages.contributors_page import ContributorsPage from pages.groups_page import GroupsPage from pages.profile_page import ProfilePage - from test_data.links import MainPageLinks, ExercisesUrls load_dotenv() @@ -54,7 +53,7 @@ def description_page_open(driver): @pytest.fixture() @allure.step(f'Open page: {ExercisesUrls.STARTING_POINT}') -def groups_ru_page_open(driver, auto_test_user_authorized): +def groups_ru_page_open1(driver, auto_test_user_authorized): page = GroupsPage(driver) page.element_is_present_and_clickable(huLocators.RU_BUTTON).click() page.element_is_visible(GroupsPageLocators.PAGE_SUBTITLES) @@ -62,6 +61,22 @@ def groups_ru_page_open(driver, auto_test_user_authorized): page.loader_checking() +@pytest.fixture() +@allure.step(f'Open page: {ExercisesUrls.STARTING_POINT} on the "ru" local') +def groups_ru_page_open(driver, auto_test_user_authorized): + page = GroupsPage(driver) + ru_button = page.element_is_present_and_clickable(huLocators.RU_BUTTON) + subtitles_before = [el.text for el in page.elements_are_located(GroupsPageLocators.PAGE_SUBTITLES)] + ru_button.click() + + def subtitles_changed(driver): + current_subtitles = [el.text for el in page.elements_are_located(GroupsPageLocators.PAGE_SUBTITLES)] + return current_subtitles != subtitles_before and all(current_subtitles) + + WebDriverWait(driver, 10).until(subtitles_changed) + page.elements_are_visible(GroupsPageLocators.PAGE_SUBTITLES) + + @pytest.fixture() @allure.step(f'Open page: {ExercisesUrls.STARTING_POINT}') def groups_en_page_open(driver, auto_test_user_authorized):