@TKDBOT
Учу python. Готов к конструктивной критике.

Как продолжить цикл в селениум если переходишь на другую страницу?

Имеем страницу с ссылками(которые нельзя открыть в новой вкладке), при прогоне циклом приходится переходить по ним, собирать нужную информацию и возвращаться обратно на главный список ссылок. Но когда возвращаюсь на главную страницу выходит ошибка и цилк перестает работать. Подскажите возможно ли как то решить такую проблему?
P.S. ссылки при возврате заново загружаются спустя пару секунд.

driver = webdriver.Chrome()
driver.get(url)
login = driver.find_element(By.XPATH, '/html/body/div[1]/div[4]/div/div[2]/div[4]/div[1]/input')
password = driver.find_element(By.XPATH, '/html/body/div[1]/div[4]/div/div[2]/div[4]/div[2]/input')
login.send_keys('')
password.send_keys('')
password.send_keys(Keys.ENTER)
driver.implicitly_wait(10) # seconds
order = driver.find_elements(By.CLASS_NAME, 'order_card')
num_orders = driver.find_elements(By.CLASS_NAME, 'order_card-contacts') 
type_orders = driver.find_elements(By.CLASS_NAME,'order_card-meta') 
for i in range(int(len(order))):
    type_order = type_orders[i].text.split('\n')[0].split('Тип заявки')[1] 
    login_order = type_orders[i].text.split('\n')[1].split('Логин')  
    status_order = type_orders[i].text.split('\n')[2].split('Статус')  
    if type_order == 'IMS': 
        pass
    else: 
        order[i].click()
        time.sleep(10)
        adres = driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div[3]/div[1]/div[2]/span[2]').text
        parol = driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div[3]/div[1]/div[8]/div[2]').text
        abon_name = driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div[3]/div[1]/div[6]/span[2]').text
        print(adres)
        print(parol)
        print(abon_name)
    driver.back()


Код ошибки

Traceback (most recent call last):
File "C:/парсер заявок/1.py", line 109, in
type_order = type_orders[i].text.split('\n')[0].split('Тип заявки')[1]
File "C:\парсер заявок\lib\site-packages\selenium\webdriver\remote\webelement.py", line 84, in text
return self._execute(Command.GET_ELEMENT_TEXT)['value']
File "C:\парсер заявок\lib\site-packages\selenium\webdriver\remote\webelement.py", line 396, in _execute
return self._parent.execute(command, params)
File "C:\парсер заявок\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 428, in execute
self.error_handler.check_response(response)
File "C:\парсер заявок\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=105.0.5195.127)
Stacktrace:
Backtrace:
Ordinal0 [0x00DDDF13+2219795]
Ordinal0 [0x00D72841+1779777]
Ordinal0 [0x00C8423D+803389]
Ordinal0 [0x00C86D04+814340]
Ordinal0 [0x00C86BC2+814018]
Ordinal0 [0x00C86E50+814672]
Ordinal0 [0x00CAE91F+977183]
Ordinal0 [0x00CCE7FC+1107964]
Ordinal0 [0x00CA94B4+955572]
Ordinal0 [0x00CCEA14+1108500]
Ordinal0 [0x00CDF192+1175954]
Ordinal0 [0x00CCE616+1107478]
Ordinal0 [0x00CA7F89+950153]
Ordinal0 [0x00CA8F56+954198]
GetHandleVerifier [0x010D2CB2+3040210]
GetHandleVerifier [0x010C2BB4+2974420]
GetHandleVerifier [0x00E76A0A+565546]
GetHandleVerifier [0x00E75680+560544]
Ordinal0 [0x00D79A5C+1808988]
Ordinal0 [0x00D7E3A8+1827752]
Ordinal0 [0x00D7E495+1827989]
Ordinal0 [0x00D880A4+1867940]
BaseThreadInitThunk [0x768B347D+18]
RtlInitializeExceptionChain [0x770D9762+99]
RtlInitializeExceptionChain [0x770D9735+54]
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
Надо либо обработать ошибку и еще раз попытаться загрузить основную страницу, либо настроить selenium ждать появления искомого элемента, там есть такая возможность.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы