StaleElementReferenceException on Python Selenium

2020-01-25 04:58发布

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

selenium.common.exceptions.StaleElementReferenceException: Message: u'stale element reference: element is not attached to the page document\n

Interestingly enough, the error pops up at different times in the for loop. Sometimes it gets through eg. 4 iterations and other times eg. 7.

Some of the relevant code being run is:

for i in range(0, 22):
    u = driver.find_elements_by_id("data")
    text = u[0].get_attribute("innerHTML")
    driver.find_elements_by_class_name("aclassname")[0].click()

What does this error mean and what is something I can try to fix this?

7条回答
再贱就再见
2楼-- · 2020-01-25 06:02

When webpage got refreshed or switched back from different window or form and trying to access an element user will get staleelementexception.

Use webdriverwait in try --except block with for loop: EX :

Code in which I got staleelementexception :


driver.find_element_by_id(tc.value).click()

driver.find_element_by_xpath("xpath").click()


Fix :

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver.find_element_by_id(tc.value).click()
for i in range(4):
   try:
        run_test = WebDriverWait(driver, 120).until( \
        EC.presence_of_element_located((By.XPATH, "xpath")))
        run_test.click()
        break
   except StaleElementReferenceException as e:
        raise e
查看更多
登录 后发表回答