Référence d'élément obsolète : dévoiler la cause et trouver une solution
Dans Selenium, rencontrer une exception de « référence d'élément obsolète » peut être frustrant, car cela indique que l'élément référencé n'est plus attaché à la page du document. Cette erreur se produit souvent lorsque le DOM a subi des modifications importantes, comme un chargement dynamique ou une navigation de page.
Pour résoudre ce problème, il est crucial d'identifier la ligne exacte de code qui déclenche l'exception. Dans le code fourni, la ligne responsable de l'erreur semble être :
<code class="java">driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();</code>
Cette ligne tente de cliquer sur un élément basé sur une chaîne XPath formatée. Cependant, l'élément sous-jacent peut avoir été supprimé ou modifié au moment de l'exécution du clic, ce qui entraîne une exception de référence d'élément obsolète.
La cause sous-jacente de ce problème est que le DOM n'est pas stable lorsque le code s'exécute. . Pour résoudre ce problème, on peut envisager d'implémenter un mécanisme de nouvelle tentative qui attend que l'élément redevienne disponible avant de cliquer dessus. Voici un exemple d'une telle nouvelle tentative :
<code class="java">try { // Attempt to click on the element driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); } catch (org.openqa.selenium.StaleElementReferenceException ex) { // Element is not yet available, so wait and try again Thread.sleep(200); // Replace with appropriate wait time driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); }</code>
En introduisant un temps d'attente avant de réessayer le clic, le code donne au DOM suffisamment de temps pour se stabiliser et garantit que l'élément est présent et cliquable avant de continuer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!