Repaso
English
TestingIntermedioTST-36

¿Qué significa StaleElementReferenceException?

Opciones

  1. El elemento se volvió a renderizar; búscalo otra vez (Opción correcta)
  2. El navegador está desactualizado y necesita actualizarse
  3. Falta el ejecutable del driver en el sistema
  4. El elemento está oculto detrás de otro elemento

Respuesta

El elemento que encontraste antes se eliminó o se volvió a renderizar en el DOM, así que la referencia guardada ya no es válida; búscalo otra vez (y espera bien)

Por qué

Selenium mantiene una referencia a un elemento del DOM. Si la página se vuelve a renderizar (actualización de React, refresco AJAX, navegación), el elemento antiguo se reemplaza por uno nuevo aunque parezca idéntico, y la referencia antigua queda obsoleta.

Solución: vuelve a localizar el elemento justo antes de usarlo, no guardes objetos WebElement mucho tiempo y espera a que la página se estabilice (explicit waits). Los page objects que buscan los elementos en cada acción evitan esto.

Recuerda

Stale = el elemento del DOM se reemplazó; localízalo otra vez.

Términos clave

Practica esta pregunta en Repaso