@Maxim2p12

Как пофиксить selenium.common.exceptions.StaleElementReferenceException Selenium python?

Здраствуйте! Есть скрипт, который парсит названия карт, если в названии есть какой-нибуть английский символ, то он заходит в эту карту и берет от туда автора, ссылку на профиль автора и дискорд(если есть) и создает екземпляр класса MapMaker и добавляет его в множество mapmakers. Если в названии карты нет английского символа, то скрипт заходит в эту карту и проверяет на наличие английского символа имя автора. Если есть - создает екземпляр класа MapMaker, добавляет его в множество mapmakers и возвращается обратно на страницу с картами. Но появляется ошибка selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found. Как от нее избавиться?

Код:
required_letters = 'qwertyuiopasdfghjklzxcvbnm'

maps_names = driver.find_elements(By.CLASS_NAME, 'title')
print(len(maps_names))


class MapMaker:
    def __init__(self, username, social_media_link, link_to_profile):
        self.username = username
        self.social_media_link = social_media_link
        self.link_to_profile = link_to_profile


mapmakers = set()


i = 0
for map_name in maps_names:
    for required_letter in required_letters:
        for letter in maps_names[i].text:
            if letter == required_letter:
                maps_names[i].click()
                try:
                    author_name = driver.find_element(By.XPATH, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[1]/div/a/span')
                    profile_link = driver.find_element(By.XPATH, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[1]/div/a')
                    social_media = driver.find_element(By.XPATH, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[3]/a/span')
                except NoSuchElementException:
                    pass

                mapmaker = MapMaker(author_name, social_media, profile_link)
                mapmakers.add(mapmaker)

                driver.back()
                i += 1
            else:
                try:
                    maps_names[i].click()
                except StaleElementReferenceException:
                    pass
                try:
                    author_name = driver.find_element(By.XPATH, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[1]/div/a/span').text
                    profile_link = driver.find_element(By.XPATH, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[1]/div/a').get_attribute('href')
                    social_media = driver.find_element(By.XPATH, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[3]/a/span').text
                    # description = driver.find_element(By.CLASS_NAME, '//*[@id="app"]/div/main/div/div/div/div[1]/div[1]/dl/dd[4]/span')
                except NoSuchElementException:
                    pass

                for letter in author_name:
                    if letter == required_letter:
                        mapmaker = MapMaker(author_name, social_media, profile_link)
                        mapmakers.add(mapmaker)

                        driver.back()
                        i += 1

                # if description.text == '':
                #     for letter in description.text:
                #         if letter == required_letter:
                #             mapmaker = MapMaker(author_name, social_media, profile_link)
                #             mapmakers.add(mapmaker)


print(mapmakers)
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
появляется ошибка selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found. Как от нее избавиться?

Ошибка возникает тогда, когда ранее полученный элемент - устарел (изменен, удален итп).

Understanding Stale Element Reference Exception in... (на java внимание не обращаем, там главное суть понять).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы