Façons d'éviter les erreurs "StaleElementReferenceException" dans Selenium
P粉920835423
2023-08-21 17:47:18
<p>J'implémente de nombreux tests Selenium en Java - parfois, mes tests échouent à cause de <code>StaleElementReferenceException</code>. </p>
<p>Pouvez-vous suggérer des moyens de rendre les tests plus stables ? </p>
J'ai eu ce problème une fois, mais à mon insu, BackboneJS fonctionnait sur la page et remplaçait l'élément sur lequel j'essayais de cliquer. Mon code est le suivant.
C'est bien sûr fonctionnellement le même que le code ci-dessous.
De temps en temps, il arrive que javascript remplace l'élément checkoutLink entre la recherche et le clic, c'est-à-dire.
Cela entraîne une StaleElementReferenceException lorsque vous essayez de cliquer sur le lien. Je n'ai trouvé aucun moyen fiable de dire à WebDriver d'attendre la fin de l'exécution du javascript, c'est donc ainsi que j'ai fini par le résoudre.
Ce code continuera à essayer de cliquer sur le lien, en ignorant l'exception StaleElementReferenceException, jusqu'à ce que le clic réussisse ou que le délai d'attente soit atteint. J'aime cette solution car elle élimine les tracas liés à l'écriture d'une logique de nouvelle tentative et utilise uniquement les constructions intégrées de WebDriver.
Cela se produit si les manipulations DOM ayant lieu sur la page rendent temporairement l'élément inaccessible. Pour faire face à ces situations, vous pouvez essayer d'accéder à l'élément plusieurs fois dans une boucle jusqu'à ce qu'une exception soit finalement levée.
Essayez d'utiliser cette excellente solution de darrelgrainger.blogspot.com :