如何修复Python Selenium上的StaleElementReferenceException ?



在python中使用Selenium时出现以下错误:

Traceback (most recent call last):
File "C:UserspedroDesktopPyCharmtutorialindex.py", line 30, in <module>
select_object_unidades.select_by_value(unidades)
File "D:Anaconda3libsite-packagesseleniumwebdriversupportselect.py", line 79, in select_by_value
opts = self._el.find_elements(By.CSS_SELECTOR, css)
File "D:Anaconda3libsite-packagesseleniumwebdriverremotewebelement.py", line 761, in find_elements
return self._execute(Command.FIND_CHILD_ELEMENTS,
File "D:Anaconda3libsite-packagesseleniumwebdriverremotewebelement.py", line 710, in _execute
return self._parent.execute(command, params)
File "D:Anaconda3libsite-packagesseleniumwebdriverremotewebdriver.py", line 425, in execute
self.error_handler.check_response(response)
File "D:Anaconda3libsite-packagesseleniumwebdriverremoteerrorhandler.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]

相关部分为:

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() 

错误发生在第二个FOR语句的末尾,在点击之后,只运行一次循环并给出错误。

这个错误是什么意思,我如何解决这个问题?

解决方案:

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()

相关内容

  • 没有找到相关文章

最新更新