Home > Enterprise >  How to fix StaleElementReferenceException on Python Selenium?
How to fix StaleElementReferenceException on Python Selenium?

Time:05-04

I am getting the following error while using Selenium in python:

Traceback (most recent call last):
  File "C:\Users\pedro\Desktop\PyCharm\tutorial\index.py", line 30, in <module>
    select_object_unidades.select_by_value(unidades)
  File "D:\Anaconda3\lib\site-packages\selenium\webdriver\support\select.py", line 79, in select_by_value
    opts = self._el.find_elements(By.CSS_SELECTOR, css)
  File "D:\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 761, in find_elements
    return self._execute(Command.FIND_CHILD_ELEMENTS,
  File "D:\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 710, in _execute
    return self._parent.execute(command, params)
  File "D:\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 425, in execute
    self.error_handler.check_response(response)
  File "D:\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, 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=101.0.4951.41)
Stacktrace:
Backtrace:
    Ordinal0 [0x0107B8F3 2406643]
    Ordinal0 [0x0100AF31 1945393]
    Ordinal0 [0x00EFC748 837448]
    Ordinal0 [0x00EFF154 848212]
    Ordinal0 [0x00EFF012 847890]
    Ordinal0 [0x00EFF2A0 848544]
    Ordinal0 [0x00F28FF5 1019893]
    Ordinal0 [0x00F2957B 1021307]
    Ordinal0 [0x00F1FF41 982849]
    Ordinal0 [0x00F442C4 1131204]
    Ordinal0 [0x00F1FA64 981604]
    Ordinal0 [0x00F44494 1131668]
    Ordinal0 [0x00F54682 1197698]
    Ordinal0 [0x00F44096 1130646]
    Ordinal0 [0x00F1E636 976438]
    Ordinal0 [0x00F1F546 980294]
    GetHandleVerifier [0x012E9612 2498066]
    GetHandleVerifier [0x012DC920 2445600]
    GetHandleVerifier [0x01114F2A 579370]
    GetHandleVerifier [0x01113D36 574774]
    Ordinal0 [0x01011C0B 1973259]
    Ordinal0 [0x01016688 1992328]
    Ordinal0 [0x01016775 1992565]
    Ordinal0 [0x0101F8D1 2029777]
    BaseThreadInitThunk [0x76BEFA29 25]
    RtlGetAppContainerNamedObjectPath [0x77C47A7E 286]
    RtlGetAppContainerNamedObjectPath [0x77C47A4E 238]

The relevant part is:

select_element_nivel_ensino = driver.find_element(By.ID, "formTurma:inputNivel")
select_object_nivel_ensino = Select(select_element_nivel_ensino)
all_available_options_nivel_ensino = create_list_nivel_ensino()

select_element_unidades = driver.find_element(By.ID, "formTurma:inputDepto")
select_object_unidades = Select(select_element_unidades)
all_available_options_unidades = create_list_unidades()

for nivel_ensino in all_available_options_nivel_ensino:
    select_object_nivel_ensino.select_by_value(nivel_ensino)
    for unidades in all_available_options_unidades:
        select_object_unidades.select_by_value(unidades)
        driver.find_element(By.NAME, "formTurma:j_id_jsp_1370969402_11").click() 

The error happens at the end of the second FOR, after the click, running the loop only once and givin the error showed up there.

What does this error mean and how I can fix this?

CodePudding user response:

Solution:

all_available_options_nivel_ensino = create_list_nivel_ensino()

all_available_options_unidades = create_list_unidades()

for nivel_ensino in all_available_options_nivel_ensino:
    select_element_nivel_ensino = driver.find_element(By.ID, "formTurma:inputNivel")
    select_object_nivel_ensino = Select(select_element_nivel_ensino)
    select_object_nivel_ensino.select_by_value(nivel_ensino)
    for unidades in all_available_options_unidades:
        select_element_unidades = driver.find_element(By.ID, "formTurma:inputDepto")
        select_object_unidades = Select(select_element_unidades)
        select_object_unidades.select_by_value(unidades)
        driver.find_element(By.NAME, "formTurma:j_id_jsp_1370969402_11").click()
  • Related