Maison  >  Article  >  Java  >  Comment gérer l'erreur « Référence d'élément obsolète : l'élément n'est pas attaché au document de page » dans WebDriver ?

Comment gérer l'erreur « Référence d'élément obsolète : l'élément n'est pas attaché au document de page » dans WebDriver ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 16:06:02508parcourir

How to Handle the

Erreur "Référence d'élément obsolète : l'élément n'est pas attaché au document de page" dans WebDriver

Rencontre avec la "référence d'élément obsolète : l'élément n'est pas attaché au document de page "L'erreur dans WebDriver est un problème courant lors de l'interaction avec des pages Web dynamiques. Ce problème survient lorsque l'élément auquel vous essayez d'accéder a été supprimé ou modifié dans la structure DOM.

Dans le code fourni, l'erreur se produit lorsque vous tentez de cliquer sur le lien d'état des avantages dans chaque section. La structure HTML suggère qu'il existe plusieurs sections avec des liens, y compris le lien sur le statut des avantages.

Le problème est probablement dû à une référence d'élément obsolète. Lorsque le code trouve la liste des liens (« #sliding-navigation//a »), il capture leurs références. Cependant, lorsqu'il parcourt ultérieurement ces liens pour trouver le lien de statut de prestation, la structure DOM peut avoir changé depuis la capture initiale. Cela peut se produire si des éléments supplémentaires sont ajoutés ou supprimés dynamiquement, ce qui rend l'index et les références obsolètes.

Pour résoudre ce problème, vous pouvez utiliser un bloc try-catch pour gérer l'exception de référence d'élément obsolète. Si la référence initiale échoue, vous pouvez tenter de retrouver l'élément et d'effectuer l'action nécessaire.

Voici un exemple utilisant un bloc try-catch :

<code class="java">try {
    WebElement benefitStatusLink = driver.findElement(By.xpath(String.format(BenefitStatLi, i)));
    benefitStatusLink.click();
} catch (StaleElementReferenceException e) {
    benefitStatusLink = driver.findElement(By.xpath(String.format(BenefitStatLi, i)));
    benefitStatusLink.click();
}</code>

Cette approche garantit que vous avoir la dernière référence à l'élément avant d'effectuer l'action de clic.

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!

Déclaration:
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