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: