Здраствуйте! Есть скрипт, который парсит названия карт, если в названии есть какой-нибуть английский символ, то он заходит в эту карту и берет от туда автора, ссылку на профиль автора и дискорд(если есть) и создает екземпляр класса 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)