Maison > Java > javaDidacticiel > le corps du texte

Comment gérer les exceptions « Référence d'élément obsolète » dans Selenium ?

Barbara Streisand
Libérer: 2024-11-04 17:16:01
original
611 Les gens l'ont consulté

How to Handle

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal