首页 > 解决方案 > PYTHON - 启用元素的 StaleElementReferenceException

问题描述

我正在尝试单击"Next page"in Python-Selenium。可以看到元素及其路径,正在单击按钮,但单击后会显示错误:

"StaleElementReferenceException:stale element reference: element is not attached to the page document"

到目前为止我的代码:

element = WebDriverWait(driver, 20).until(EC.presence_of_element_located(\
                           (By.XPATH, butn)))
print (element.is_enabled())
while True and element.is_enabled()==True:
        driver.find_element_by_xpath(butn).click()

element.is_enabled()==True点击后的错误是一个

有人可以帮忙吗?

标签: pythonseleniumselenium-webdriver

解决方案


当您在 Selenium 中搜索元素时,它不会保留完整的对象,而只会引用浏览器中 DOM 中的对象。然后当您click浏览器创建新的 DOM 并且旧的引用不正确时,您必须再次查找元素。

像这样的东西

# find first time
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, butn)))
print(element.is_enabled())

while element.is_enabled():
    driver.find_element_by_xpath(butn).click()
    # find again after changes in DOM
    element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, butn)))
    print(element.is_enabled())

推荐阅读