При запукске выдает вот такую ошибку

При запуске выдает такую ошибку

return [element for element in elements if element.text.lower() == name][0]
E IndexError: list index out of range

@pytest.mark.usefixtures('setup')
class TestHomepage:

    def test_foot_links(self):
        footer_links = HomepageFooterLink(self.driver)
        actual_Links = footer_links.get_fot_links_text()
        expected_links = footer_links.FOOTER_LINK
        assert expected_links == actual_Links, 'Validating Footer Links text'
        footer_links.get_foot_link_by_name('Офисы и контакты').click()
        time.sleep(5)

    class HomepageFooterLink(SeleniumBase):
    def __init__(self, driver):
        super().__init__(driver)
        self.driver = driver
        self.__footerlinks: str = '#app > div > footer > div > div:nth-child(1) > div > div'
        self.FOOTER_LINK = 'Офисы и контакты\nПолитика конфиденциальности\nПользовательское соглашение'

    def get_footer_links(self) -> List[WebElement]:
        return self.are_visible('css', self.__footerlinks, 'Footer Links')

    def get_fot_links_text(self) -> str:
        foot_links = self.get_footer_links()
        foot_links_text = self.get_text_from_webelements(foot_links)
        return Utils.join_strings(foot_links_text)

    def get_foot_link_by_name(self, name: str) -> WebElement:
        elements = self.get_footer_links()
        return self.get_element_by_text(elements, name)


class SeleniumBase:
    def __init__(self, driver):
        self.driver = driver
        self.__wait = WebDriverWait(driver, 15, 0.3)

    def __get_selenium_by(self, find_by: str) -> dict:
        find_by = find_by.lower()
        locating = {'css': By.CSS_SELECTOR,
                    'xpath': By.XPATH,
                    'class_name': By.CLASS_NAME,
                    'id': By.ID,
                    'link_text': By.LINK_TEXT,
                    'name': By.NAME,
                    'partial_link_text': By.PARTIAL_LINK_TEXT,
                    'tag_name': By.TAG_NAME}
        return locating[find_by]

    def is_visible(self, find_by: str, locator: str, locator_name: str = None) -> WebElement:
        return self.__wait.until(ec.visibility_of_element_located((self.__get_selenium_by(find_by), locator)), locator_name)

    def is_present(self, find_by: str, locator: str, locator_name: str = None) -> WebElement:
        return self.__wait.until(ec.presence_of_element_located((self.__get_selenium_by(find_by), locator)), locator_name)

    def is_not_present(self, find_by: str, locator: str, locator_name: str = None) -> WebElement:
        return self.__wait.until(ec.invisibility_of_element_located((self.__get_selenium_by(find_by), locator)),
                                 locator_name)

    def are_visible(self, find_by: str, locator: str, locator_name: str = None) -> List[WebElement]:
        return self.__wait.until(ec.visibility_of_all_elements_located((self.__get_selenium_by(find_by), locator)), locator_name)

    def are_present(self, find_by: str, locator: str, locator_name: str = None) -> List[WebElement]:
        return self.__wait.until(ec.presence_of_all_elements_located((self.__get_selenium_by(find_by), locator)),
                                 locator_name)

    def get_text_from_webelements(self, elements: List[WebElement]) -> List[str]:
        return [element.text for element in elements]

    def get_element_by_text(self, elements: List[WebElement], name: str) -> WebElement:
        name = name.lower()
        return [element for element in elements if element.text.lower() == name][0]

Ответы (0 шт):