Задать вопрос
@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]
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
Надо либо обработать ошибку и еще раз попытаться загрузить основную страницу, либо настроить selenium ждать появления искомого элемента, там есть такая возможность.
Ответ написан
Ваш ответ на вопрос

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

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