Lire le traceback comme un senior
Un traceback est une histoire racontée à l'envers. Trouvez la seule ligne qui est la vôtre, puis laissez la classe d'exception vous dire ce que l'app a fait.
Trouvez votre ligne d'abord
Commencez par le bas : l'exception et son message. Remontez jusqu'à la première frame dans votre repo — c'est là que votre hypothèse a cassé. Tout le reste est la bibliothèque qui fait son travail.
Les trois grandes, et ce que chacune signifie
StaleElementReferenceException— vous avez trouvé l'élément, puis la page s'est re-rendue, et votre handle pointe vers un nœud mort. Retrouvez-le après le rendu ; ne vous accrochez pas à l'ancienne référence.ElementClickInterceptedException— l'élément est là, mais quelque chose le couvre : une surcouche, un toast, une bannière de cookies. Votre clic allait bien ; la page n'était pas prête comme vous le supposiez.TimeoutException— la condition de l'attente n'est jamais devenue vraie. Mauvaise condition, mauvais sélecteur, ou une app vraiment lente : trois correctifs différents, et un timeout plus grand n'en est pas un.
▸ The message names the culprit
E selenium.common.exceptions.ElementClickInterceptedException:
E Message: element click intercepted: Element <button id="place-order">
E is not clickable at point (640, 610). Other element would receive
E the click: <div class="cookie-banner">...</div>
# The error printed the culprit. The fix is not a bigger wait —
# it is dismissing the banner, or asserting it is gone before clicking.Le bruit du framework
Les frames de site-packages sont du décor — les fixtures, les plugins de réessai et les reporters ajoutent du bruit qui ne signifie rien. Votre bug vit là où votre code rencontre la bibliothèque, généralement une frame.
Basé sur la documentation Python de Selenium et Playwright sur les erreurs et l'attente