Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

stale element reference Fehlercode

Der stale element reference Fehler ist ein WebDriver-Fehler, der auftritt, weil das referenzierte Web-Element nicht mehr an den DOM angehängt ist.

Jedes DOM-Element wird im WebDriver durch eine eindeutige identifizierende Referenz dargestellt, bekannt als ein Web-Element. Die Web-Element-Referenz ist ein UUID, das verwendet wird, um Befehle für spezifische Elemente auszuführen, wie zum Beispiel das Abrufen des Tag-Namens eines Elements und das Abrufen einer Eigenschaft eines Elements.

Wenn ein Element nicht mehr an den DOM angehängt ist, d.h. es aus dem Dokument entfernt wurde oder das Dokument sich geändert hat, gilt es als stale. Eine Veraltung tritt zum Beispiel auf, wenn Sie eine Web-Element-Referenz haben und das Dokument, aus dem sie stammt, navigiert wird.

Beispiele

Dokumentnavigation

Bei der Navigation werden alle Web-Element-Referenzen zum vorherigen Dokument zusammen mit dem Dokument verworfen. Dies wird dazu führen, dass jeder nachfolgende Versuch, mit dem Web-Element zu interagieren, mit dem stale element reference Fehler fehlschlägt:

python
import urllib

from selenium import webdriver
from selenium.common import exceptions

def inline(doc):
    return "data:text/html;charset=utf-8,{}".format(urllib.quote(doc))

session = webdriver.Firefox()
session.get(inline("<strong>foo</strong>"))
foo = session.find_element_by_css_selector("strong")

session.get(inline("<i>bar</i>"))
try:
    foo.tag_name
except exceptions.StaleElementReferenceException as e:
    print(e)

Ausgabe:

StaleElementReferenceException: The element reference of e75a1764-ff73-40fa-93c1-08cb90394b65 is stale either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed

Knotenentfernung

Wenn ein Dokumentknoten aus dem DOM entfernt wird, wird seine Web-Element-Referenz ungültig. Dies wird ebenfalls dazu führen, dass jeder nachfolgende Versuch, mit dem Web-Element zu interagieren, mit dem stale element reference Fehler fehlschlägt:

python
import urllib

from selenium import webdriver
from selenium.common import exceptions

def inline(doc):
    return "data:text/html;charset=utf-8,{}".format(urllib.quote(doc))

session = webdriver.Firefox()
session.get(inline("<button>foo</button>"))
button = session.find_element_by_css_selector("button")
session.execute_script("""
    let [button] = arguments;
    button.remove();
    """, script_args=(button,))

try:
    button.click()
except exceptions.StaleElementReferenceException as e:
    print(e)

Ausgabe:

StaleElementReferenceException: The element reference of e75a1764-ff73-40fa-93c1-08cb90394b65 is stale either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed

Siehe auch