Verifique el elemento presente y espere el comando en Selenium

⚡ Resumen inteligente

Verificar la presencia del elemento y los comandos waitFor en Selenium El IDE confirma que una página contiene los elementos y el texto que espera una prueba, y pausa la reproducción hasta que una condición dinámica se cumpla antes de ejecutar el siguiente paso.

  • 🔘 Comprobaciones de elementos: verifyElementPresent devuelve TRUE cuando el localizador coincide con algo en la página, y verifyElementNotPresent es su inverso exacto.
  • ☑️ Comprobaciones de texto: verifyTextPresent busca en toda la página y distingue entre mayúsculas y minúsculas, por lo que "Atlanta" nunca coincide con "atlanta".
  • ✅ Verificaciones de posición: Las funciones verifyElementPositionLeft y verifyElementPositionTop comparan el desplazamiento en píxeles de un elemento con respecto al borde de la página.
  • 🧪 Carga de la página: Los comandos andWait, como clickAndWait, pausan el script hasta que se haya cargado completamente una nueva página.
  • 🛠️ Contenido dinámico: Los comandos waitFor esperan a que se cumpla una condición en lugar de que se cargue la página, lo cual resulta adecuado para pantallas AJAX que nunca se recargan.
  • 📊 IDE actual: La extensión del navegador cambia el nombre de estos pasos y asigna a cada comando de espera su propio tiempo de espera en milisegundos.

Verificar la presencia del elemento y el comando waitFor en Selenium IDE

un grabado Selenium IDE El script hace clic y escribe, pero por sí solo nunca decide si la aplicación se comportó correctamente. Dos familias de comandos realizan ese trabajo: verificar comandos, que comprueban el estado de la página y esperar comandos que detienen la ejecución hasta que la página esté lista para ser revisada.

⚠️ Una nota sobre las versiones: Las capturas de pantalla que aparecen a continuación provienen del original. Firefox-enchufar Selenium IDE, que ya no se distribuye, y usan sus nombres selenes en camelCase. El IDE actual es Chrome, Firefox y Edge extensión del navegador. El comportamiento descrito aquí sigue siendo válido, pero varios nombres de comandos cambiaron: un mapaping La tabla aparece más adelante en este artículo, y cada comando y captura de pantalla original se conserva exactamente como se publicó.

Verificar la presencia de un elemento

Podemos utilizar los siguientes dos comandos para verificar la presencia de un elemento:

  • verificarElementoPresente – devuelve VERDADERO si el elemento especificado se ENCONTRÓ en la página; FALSO en caso contrario
  • verificarElementNotPresent – devuelve VERDADERO si el elemento especificado NO se ENCONTRÓ en ninguna parte de la página; FALSO si está presente.

Ambos comandos toman un elemento localizador en el Target campo: un ID, un nombre, un selector CSS, un texto de enlace o un XPath expresión — y ninguna necesita un valor.

El script de prueba a continuación verifica que el cuadro de texto Nombre de usuario esté presente dentro del Mercury Página de inicio de Tours, mientras que el cuadro de texto Nombre no está. El cuadro de texto Nombre es en realidad un elemento presente en la página de Registro de Mercury Tours, no en la página de inicio.

Selenium Script IDE que utiliza verifyElementPresent en el cuadro userName y verifyElementNotPresent en el cuadro First Name.

Porque estos son verificar comandos en lugar de afirmar Si se producen errores en los comandos, se registra un fallo en el archivo de registro y los pasos restantes se ejecutan igualmente. Esta distinción se explica con más detalle más adelante.

Verificar la presencia de un determinado texto en el comando en Selenium

Comprobar que un elemento existe no siempre es suficiente; a menudo, una prueba necesita confirmar las palabras que se muestran al usuario. Dos comandos de texto cubren ese caso.

  • verificarTextoPresente – devuelve VERDADERO si la cadena de texto especificada se ENCONTRÓ en algún lugar de la página; FALSO en caso contrario
  • verificarTextoNoPresente – devuelve VERDADERO si la cadena de texto especificada NO se ENCONTRÓ en ninguna parte de la página; FALSO si se encontró

Recuerde que estos comandos distinguen entre mayúsculas y minúsculas.

El registro que aparece a continuación muestra la misma página revisada dos veces con dos grafías diferentes de la misma frase.

Selenium El registro del IDE muestra que verifyTextPresent pasa para Atlanta a Las Vegas y falla para Atlanta a Las Vegas.

En el escenario anterior, "Atlanta a Las Vegas" se trató de manera diferente a "atlanta a Las Vegas" porque la letra "A" de "Atlanta" estaba en mayúscula en la primera y en minúscula en la segunda. Al usar el comando verifyTextPresent en cada una, una se procesó correctamente y la otra falló.

Verificar la posición específica de un elemento

Los defectos de diseño rara vez afectan a un localizador, por lo que las comprobaciones de presencia no los detectan. Los comandos de posición solucionan ese problema.

Selenium IDE indica la posición de un elemento midiendo (en píxeles) qué tan lejos está del borde izquierdo o superior de la ventana del navegador.

  • verificarElementPositionLeft – verifica si el número especificado de píxeles coincide con la distancia del elemento desde el borde izquierdo de la página. Esto devolverá FALSO si el valor especificado no coincide con la distancia desde el borde izquierdo.
  • verificarPosiciónElementoSuperior – verifica si el número especificado de píxeles coincide con la distancia del elemento desde el borde superior de la página. Esto devolverá FALSO si el valor especificado no coincide con la distancia desde el borde superior.

El siguiente script registra los desplazamientos de píxeles esperados en la columna Valor.

Selenium Pasos del IDE que utilizan verifyElementPositionLeft y verifyElementPositionTop con valores de píxeles en la columna Value.

Trate estos dos comandos con precaución. El desplazamiento de píxeles varía según el tamaño de la ventana, el nivel de zoom y las fuentes instaladas, por lo que un valor fijo que funciona en un equipo puede fallar en otro.

Esperar comandos en Selenium

Un comando de verificación solo puede inspeccionar lo que ya está en pantalla, por lo que una comprobación que se ejecuta demasiado pronto falla aunque la aplicación esté funcionando. Los comandos de espera solucionan ese problema de sincronización.

Los siguientes son los tipos de comandos de espera en Selenium

y esperar comandos

Estos son comandos que esperarán a que se cargue una nueva página antes de pasar al siguiente comando.

Ejemplos son

  • hacer clic y esperar
  • escriba y espere
  • seleccionar y esperar

Cada una de ellas es una orden de acción ordinaria con el sufijo AndWait añadido, como muestra el paso grabado a continuación.

Paso clickAndWait grabado manteniendo el Selenium Script del IDE hasta que la siguiente página termine de cargarse.

esperar por comandos

Estos son comandos que esperan a que se cumpla una condición específica antes de pasar al siguiente comando (independientemente de que se cargue una nueva página). Estos comandos son más apropiados para usarse en sitios web dinámicos basados ​​en AJAX que cambian valores y elementos sin recargar toda la página. Ejemplos incluyen:

  • esperar por el título
  • esperarParaTextoPresente
  • esperar alerta

Considere el escenario de Facebook a continuación.

Formulario de registro de Facebook que muestra el enlace "¿Por qué necesito proporcionar mi fecha de nacimiento antes de hacer clic?"

Podemos usar una combinación de "hacer clic" y "esperarForTextPresent" para verificar la presencia del texto "Proporcionar su cumpleaños".

Selenium Pasos del IDE combinando clic con waitForTextPresent para esperar a que se proporcione el texto de tu cumpleaños.

No podemos usar clickAndWait porque no se cargó ninguna página al hacer clic en "¿Por qué debo proporcionar mi fecha de nacimiento?" enlace. Si lo hacemos, la prueba fallará.

La misma regla se aplica a cualquier contenido inyectado por script en lugar de por navegación, por eso Pantallas controladas por AJAX casi siempre es necesario waitFor en lugar de andWait.

Comandos Assert vs Verify vs waitFor en Selenium IDE

Los principiantes frecuentemente eligen la familia equivocada y luego se preguntan por qué un conjunto se detiene en el primer defecto, o por qué informa veinte fallas que todos trace volver a uno. Los tres prefijos responden a tres preguntas diferentes.

Prefijo ¿Qué hace? En caso de fracaso Mejores usados ​​para
afirmar Comprueba una condición inmediatamente Registra el fallo y detiene el caso de prueba. Requisitos previos: un inicio de sesión que debe ser exitoso antes de que cualquier otra cosa tenga sentido.
verificar Comprueba una condición inmediatamente Registra el fallo y continúa con el siguiente comando. Controles independientes, como varias etiquetas en una página de confirmación.
esperarPor Las encuestas se realizarán hasta que la condición se cumpla. Registra el fallo una vez que expira el tiempo de espera y luego continúa. Todo lo que aparezca tarde: respuestas AJAX, indicadores de carga, diálogos.

Un patrón práctico combina los tres: afirmar la página en la que se aterrizó, esperar el elemento que llega de forma asíncrona y luego verificar cada campo individual. Hacerlo en ese orden significa que una navegación defectuosa detiene la prueba prematuramente, mientras que un puñado de discrepancias cosméticas se informan en una sola ejecución. La misma disciplina se traslada a Selenium pruebas escritas en código, donde los equivalentes son aserciones estrictas, aserciones flexibles y esperas explícitas.

Comandos de verificación y espera en el actual Selenium IDE

El FirefoxEl IDE de plugin que generó las capturas de pantalla anteriores fue retirado y el conjunto de comandos se reconstruyó para la extensión de navegador actual. Varios nombres de Selenese se conservaron, algunos fueron renombrados y unos pocos fueron eliminados. La tabla a continuación relaciona los comandos utilizados en este artículo con sus equivalentes actuales, tomados de la documentación oficial. Selenium Referencia de comandos del IDE.

Comando selenese heredado Comando en el IDE actual
verificarElementoPresente verificar la presencia del elemento
verificarElementNotPresent verificar que el elemento no esté presente
verificarTextoPresente verificar texto (limitado a un localizador de elemento, no a toda la página)
verificarTextoNoPresente verificar que no sea texto (limitado a un localizador de elementos)
verificarTítulo verificar título
verificarPosiciónElementoIzquierda / verificarPosiciónElementoSuperior No hay equivalente: se eliminaron las afirmaciones de posición.
clicYEsperar, escribirYEsperar, seleccionarYEsperar Sin el sufijo AndWait: el comando open ya espera a que se cargue la página.
esperarPorElementoPresente esperar a que el elemento esté presente, con un tiempo de espera en milisegundos
esperar alerta Confirme la alerta o verifique el texto de la alerta después de que aparezca el cuadro de diálogo.

Dos diferencias son cruciales en el trabajo diario. Primero, los comandos de espera actuales —esperar a que el elemento esté presente, esperar a que el elemento sea visible, esperar a que el elemento sea editable y sus equivalentes negativos— requieren un tiempo de espera explícito en milisegundos, por lo que un paso lento ya no tiene que compartir un tiempo de espera global. Segundo, la búsqueda de texto en toda la página ha desaparecido: verificar el texto requiere un localizador, que generalmente produce una comprobación más precisa.

Errores comunes con los comandos Verify y waitFor

La mayoría de los problemas reportados con estos comandos no son defectos del IDE. La siguiente lista incluye los fallos más frecuentes y cómo solucionarlos.

  • El elemento existe, pero la comprobación sigue fallando. La presencia y la visibilidad son estados diferentes. Un elemento oculto tras una regla CSS sigue presente en el DOM, por lo que conviene combinar la comprobación de presencia con la espera a que el elemento sea visible cuando la prueba dependa de que el usuario lo vea realmente.
  • La comprobación de texto falla cuando la redacción parece idéntica. Los espacios de no separación, los espacios en blanco al final de las líneas y los apóstrofes curvados copiados de un documento de diseño impiden una coincidencia exacta. Vuelva a escribir la cadena esperada manualmente en lugar de pegarla.
  • Un comando de espera agota el tiempo de espera en una página que claramente se cargó. El elemento suele estar dentro de un iframe. Ejecute primero la selección del marco; de lo contrario, el localizador se evaluará en el documento incorrecto.
  • clickAndWait se bloquea en una aplicación de una sola página. No se produce ninguna navegación, por lo que no hay nada que esperar. Sustitúyalo por un clic seguido del comando waitFor correspondiente.
  • La comprobación de posición se realiza correctamente a nivel local, pero falla en el servidor de compilación. El tamaño de la pantalla y la representación de la fuente varían. Se recomienda realizar una comprobación de presencia o de texto, o bien, establecer un tamaño de ventana explícito al inicio de la prueba.
  • Todo el proceso se detiene ante la primera discrepancia. Se registró un comando de aserción donde se pretendía registrar un comando de verificación. Cambie el prefijo y la ejecución informará de todos los fallos en lugar de solo del primero.

Una vez que un guion sobrevive a estas trampas, el siguiente paso suele ser... Almacenar valores de tiempo de ejecución en variables De esta forma, las comprobaciones se comparan con datos reales en lugar de con cadenas de texto predefinidas.

Preguntas Frecuentes

El IDE anterior compartía un tiempo de espera global en cada paso waitFor, que se modificaba con el comando setTimeout. La extensión actual requiere un tiempo de espera explícito en milisegundos en cada comando wait, por lo que una sola pantalla lenta ya no obliga a que todos los demás pasos esperen tanto.

No. La pausa siempre se ejecuta durante toda su duración, por lo que se pierde tiempo cuando la página carga rápido y sigue fallando cuando carga lento. Úsala solo para mostrar un paso durante una demostración, nunca en una suite que vayas a ejecutar repetidamente.

No. Presencia significa que el nodo existe en el DOM, lo cual se mantiene para elementos ocultos por CSS o posicionados fuera de la pantalla. Cuando la prueba depende de que el usuario vea algo, agregue una espera a que el elemento sea visible junto con la comprobación de presencia.

Sí, y el IDE actual lo requiere. Su comando de verificación de texto toma un localizador de elemento más la cadena esperada, lo cual es más estricto que la antigua búsqueda en toda la página e impide que un elemento de menú no relacionado cumpla con una verificación que nunca debió cumplir.

Code La exportación convierte cada comando en una instrucción equivalente en el lenguaje de destino, de modo que un paso de espera se convierte en una espera explícita de WebDriver. Lea el archivo generado antes de confiar en él, ya que los tiempos de espera y el comportamiento de fallos leves o graves no siempre se conservan intactos tras la traducción.

Los modelos de aprendizaje automático leen datos históricos de ejecución e identifican los pasos que fallan de forma intermitente en lugar de constante, lo que indica una espera faltante. La reparación de localizadores asistida por IA aborda la otra causa común proponiendo un nuevo selector cuando cambia el marcado.

Gestiona bien la parte mecánica, convirtiendo un paso de espera en un WebDriverWait con una condición prevista. RevObserva el tiempo de espera que elige y la condición que selecciona, ya que una condición de presencia generada a menudo necesita ser una condición de visibilidad en su lugar.

Los localizadores se evalúan en función del documento seleccionado actualmente, y un iframe es un localizador independiente. Ejecute primero el comando de selección de marco, luego la comprobación y, a continuación, vuelva al documento principal para que los pasos siguientes no se realicen en un contexto incorrecto.

Resumir este post con: