diff --git a/locators/exercises_ru_similar_phrases_page_locators.py b/locators/exercises_ru_similar_phrases_page_locators.py index 29cf91f087..d688204504 100644 --- a/locators/exercises_ru_similar_phrases_page_locators.py +++ b/locators/exercises_ru_similar_phrases_page_locators.py @@ -12,6 +12,9 @@ class ExercisesRuSimilarPhrasesPageLocators: PAGE_SIXTH_LEVEL_ELEMENTS = (By.XPATH, "//main/*/*/*/*/*/*") PAGE_SEVENTH_LEVEL_ELEMENTS = (By.XPATH, "//main/*/*/*/*/*/*/*") PAGE_LIST1 = (By.XPATH, '//ul[@aria-label="Breadcrumbs"]//a') + PAGE_LIST1_1 = (By.XPATH, '(//ul[@aria-label="Breadcrumbs"]//a)[1]') + PAGE_LIST1_2 = (By.XPATH, '(//ul[@aria-label="Breadcrumbs"]//a)[2]') + PAGE_LIST1_3 = (By.XPATH, '(//ul[@aria-label="Breadcrumbs"]//a)[3]') PAGE_LIST2 = (By.XPATH, "//aside//button") PAGE_LIST3 = (By.XPATH, '//div[contains(@class, "series-page")]//a') CARD_IMAGES_LIST4 = (By.XPATH, '//div[contains(@style, "svg")]') diff --git a/pages/exercises_ru_similar_phrases_page.py b/pages/exercises_ru_similar_phrases_page.py index c05d14f239..b5c1452426 100644 --- a/pages/exercises_ru_similar_phrases_page.py +++ b/pages/exercises_ru_similar_phrases_page.py @@ -1,6 +1,8 @@ """Methods for verifying web elements on the 'Exercises "Similar phrases"' page on the 'ru' local""" import allure import requests +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.wait import WebDriverWait as Wait from pages.base_page import BasePage from locators.exercises_ru_similar_phrases_page_locators import ExercisesRuSimilarPhrasesPageLocators @@ -164,3 +166,19 @@ def get_subgroup_links_href(self): @allure.step("Get status code of subgroup links") def get_subgroup_link_status_codes(self): return [requests.head(link_href).status_code for link_href in self.get_subgroup_links_href()] + + @allure.step("Click on breadcrumbs links and thereby open corresponding web pages in the same tab") + def click_on_breadcrumbs_links(self): + breadcrumbs_locators = [self.locators.PAGE_LIST1_1, self.locators.PAGE_LIST1_2, self.locators.PAGE_LIST1_3] + group_page_url = self.get_current_tab_url() + opened_pages = [self.get_current_tab_url()] + + for link_locator in breadcrumbs_locators[:2]: + self.element_is_clickable(link_locator).click() + Wait(self.driver, self.timeout).until(EC.url_changes(group_page_url)) + opened_pages.append(self.get_current_tab_url()) + self.driver.back() + Wait(self.driver, self.timeout).until(EC.url_to_be(group_page_url)) + + print(*opened_pages, sep='\n') + return opened_pages diff --git a/tests/exercises_ru_similar_phrases_page_test.py b/tests/exercises_ru_similar_phrases_page_test.py index 798468f914..e1f46475b9 100644 --- a/tests/exercises_ru_similar_phrases_page_test.py +++ b/tests/exercises_ru_similar_phrases_page_test.py @@ -137,3 +137,10 @@ def test_ersp_03_03_verify_subgroup_links(self, driver, exercises_ru_similar_phr "Attributes 'href' of subgroup links mismatch valid values" assert all(element in erspPD.links_status_code for element in subgroup_links_status_codes), \ "Status codes of subgroup links mismatch valid values" + + @allure.title("Verify if breadcrumbs links lead to correct pages after clicking") + def test_ersp_03_04_verify_breadcrumbs_links_navigation(self, driver, exercises_ru_similar_phrases_page_open): + page = erspPage(driver) + opened_pages = page.click_on_breadcrumbs_links() + assert opened_pages, "Transitions to pages have not performed" + assert all(element in erspPD.breadcrumbs_urls for element in opened_pages), "Links lead to incorrect pages"