Verweis auf veraltete Elemente: Identifizieren der Quelle der Ausnahme
Es kann frustrierend sein, beim Ausführen von WebDriver-Tests auf die Ausnahme „Verweis auf veraltete Elemente“ zu stoßen. Lassen Sie uns die Details des Fehlers untersuchen und eine Lösung zur Behebung dieses Problems finden.
Fehlerübersicht
Die Ausnahme „veraltete Elementreferenz“ tritt auf, wenn der WebDriver dies versucht mit einem Element interagieren, das nicht mehr Teil des DOM ist. Dies kann aus verschiedenen Gründen passieren, wie zum Beispiel:
Codebeispiel
Der bereitgestellte Codeausschnitt zeigt ein Szenario, in dem dieser Fehler auftreten könnte:
<code class="java">public static void main(String[] args) throws InterruptedException { // ... List<WebElement> LeftNavLinks = driver.findElements(By.xpath("//*[@id='sliding-navigation']//a")); for (WebElement e : LeftNavLinks) { if(e.getText().equals("Benefit Status")) { driver.findElement(By.xpath(String.format("//*[@id='sliding-navigation']/li[%s]/a", i))).click(); driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click(); } i++; } }</code>
Grund für die Ausnahme
Basierend auf der bereitgestellten HTML-Struktur tritt der Fehler wahrscheinlich auf, wenn versucht wird, auf das Element mit dem xpath //*[@id='divContentHolder']/div[1]/ zu klicken. a[1]. Dies kann daran liegen, dass das Element nach der ersten Navigation und dem Elementabruf entfernt oder geändert wurde.
Lösung
Um dieses Problem zu beheben, können Sie einen Mechanismus zur Behebung des Problems implementieren Ausnahme wegen veralteter Elementreferenz. Ein Ansatz besteht darin, die Ausnahme abzufangen und die Aktion erneut zu versuchen, wie im folgenden Codeausschnitt gezeigt:
<code class="java">try { driver.findElement(By.xpath("//*[@id='divContentHolder']/div[1]/a[1]")).click(); } catch (org.openqa.selenium.StaleElementReferenceException ex) { // Retry the action here driver.findElement(By.xpath("//*[@id='divContentHolder']/div[1]/a[1]")).click(); }</code>
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinen WebDriver-Tests die Ausnahme „Veraltete Elementreferenz“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!