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, telles qu'un chargement dynamique ou une navigation dans les pages.
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 :
driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
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 :
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();
}
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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3