Guía de inicio
Introducción a testRigor
testRigor es un agente de IA que permite a cualquier persona crear pruebas de extremo a extremo desde la perspectiva del usuario final utilizando un lenguaje sencillo, eliminando así el mantenimiento excesivo de las pruebas relacionado con los cambios en los localizadores. testRigor admite pruebas en las siguientes plataformas:- Pruebas web (Windows, MacOS, Ubuntu) y pruebas web móviles en iOS y Android
- Pruebas de aplicaciones móviles nativas e híbridas para iOS y Android
- Pruebas de aplicaciones nativas de escritorio
- Pruebas de aplicaciones de mainframe
- Pruebas de aceptación
- Pruebas de humo
- Pruebas de regresión
- Pruebas del sistema (de extremo a extremo)
- Pruebas de API
- Pruebas visuales
- Pruebas de SMS y llamadas telefónicas
- Pruebas de autenticación de dos factores (2FA) y Captcha
- Aproveche la IA generativa de testRigor para crear pruebas basadas en descripciones
- Escriba pruebas desde cero utilizando comandos en lenguaje sencillo (consulte esta documentación para obtener ayuda)
Creación de una cuenta
testRigor se puede personalizar ampliamente según sus necesidades. Para obtener la información más reciente sobre nuestros planes, póngase en contacto con nuestro amable equipo de ventas. A continuación le presentamos algunas opciones que puede considerar:- Nube (predeterminado) o local
- Windows, MacOS, Ubuntu, iOS, Android, el número de dispositivos, etc.
- Número de paralelizaciones para una ejecución de pruebas más rápida
Para crear una cuenta, visite https://testrigor.com/sign-up/.
Seleccione un plan público gratuito o una prueba gratuita según sus preferencias.
Creación de sus primeros casos de prueba sin código
Tutorial para crear su primer caso de prueba:
Todos los tutoriales en video: https://testrigor.com/tutorials/
Todos los casos de prueba públicos recientes https://app.testrigor.com/public-tests.
Consulte más detalles sobre la creación de pruebas paso a paso aquí.
Documentación de soporte en español de testRigor
El objetivo de testRigor es permitirle escribir sus pruebas tal y como las expresaría en lenguaje sencillo. Es ampliable, ya que le permite utilizar sus propias frases. Es posible que desee familiarizarse con las mejores prácticas de automatización de pruebas y, lo que es más importante, con las mejores prácticas de testRigor.
Puede hacer clic en elementos con
cliquear "Enviar", ingresar datos con ingresar "Pedro" en "Primer nombre" y validar con verificar que la página contiene "¡Bienvenido, Pedro!".Tabla de comandos básicos
Admitimos una gran variedad de comandos. La siguiente lista contiene muchos ejemplos de cómo expresarlos.
| Acción | Opciones | Ejemplo |
|---|---|---|
clic |
doble, triple, derecho, central, largo, veces, en el contexto de, usando el ratón, usando JavaScript, sin desplazarse, usando IA, usando OCR, usando solo OCR, y cambiar a la nueva pestaña |
o:
o:
o:
o:
o:
o:
o:
Nota: Puede utilizar el botón central del ratón para abrir enlaces en una nueva pestaña
o:
o:
o:
Para las pruebas web, puede especificar la forma en que hacemos clic en un elemento de la siguiente manera:
o:
Nota: En modo sin interfaz gráfica, esta opción se ignorará, ya que el único método disponible ahora es JavaScript
o:
Nota: Puede utilizar "sin desplazarse" para evitar el comportamiento predeterminado de testRigor (desplazarse hasta el elemento antes de hacer clic).
o:
Nota: En este ejemplo se utiliza una imagen almacenada con el nombre "Logo" en "Test Data". La imagen se utiliza para identificar la ubicación del clic. Por ejemplo, este tipo de clic es útil cuando necesita hacer clic en un mapa de imagen. La discrepancia predeterminada es del 20 %.
También admitimos comandos específicos para dispositivos móviles, para ir a la pantalla de inicio o revisar las aplicaciones utilizadas recientemente.
Para hacer clic en el botón de Inicio está disponible en dispositivos móviles Android e iOS utilizando los siguientes comandos:
Para hacer clic en el botón reciente está disponible en dispositivos móviles Android utilizando los siguientes comandos (solo en Android, ya que iOS no tiene este botón):
También hay un comando para cambiar a la nueva pestaña cuando la acción de hacer clic abre una automáticamente.
|
generar |
Plantilla simple, correo electrónico único, nombre único, Expresión regular, código de autenticación de Google |
Genere un correo electrónico único en el dominio testrigor-mail.com:
Genere un nombre único:
Genere un número de teléfono único:
Genere una cadena única de letras/números:
Genere una cadena única de letras/números y usando IA para encontrar el campo objetivo a completar:
Genere fecha y hora con parámetros únicos:
Genere una dirección de correo electrónico en un dominio personalizado:
Genere multilínea:
Genere e introduzca:
Genere y solo guarde:
Genere un código TOTP (contraseña de un solo uso basada en el tiempo) de Google Authenticator para autenticación en dos pasos o multifactor. Se necesita el código QR del usuario guardado en un valor almacenado o el secreto en texto para generar el código:
|
ingresar |
ingresar, tab, escape, borrar, retroceso, ctrl+a, flecha derecha, flecha izquierda, flecha arriba, flecha abajo, ir, buscar, enviar, siguiente, anterior, hecho |
Nota: El comando ingresar admite selectores/menús desplegables/casillas de verificación/etc.
Para casillas de verificación, puede hacer lo siguiente:
Para ingresar, tab, escape, borrar, retroceso, ctrl+a, flechas o, en Android, ir, buscar, enviar, siguiente, anterior, hecho:
Para entradas multilínea:
Para selectores o menús desplegables:
Usando IA para encontrar la ubicación del elemento:
*Nota: Evite usar el comando "ingresar en" cuando el cursor ya esté enfocado en el campo deseado. En estos casos, use el comando "tipear".
También es posible seleccionar una opción por posición en selectores o menús desplegables:
*Nota: Debido a las diferencias necesarias para que testRigor interactúe con aplicaciones de escritorio (por ejemplo, navegadores) frente a la UI de la aplicación web, se crearon los comandos "seleccionar" para interactuar con los selectores/menús desplegables nativos del navegador que están etiquetados como <select> en el DOM. Si su menú desplegable es personalizado, es preferible interactuar con él como lo haría una persona usuaria (clics, desplazamientos, etc.). |
tipear |
insertar, tab, escape, borrar, retroceso, ctrl+a, flecha derecha, flecha izquierda, flecha arriba, flecha abajo, ir, buscar, enviar, siguiente, anterior, hecho |
Se debe utilizar principalmente para escribir texto libre en campos de entrada. Puede escribir texto sin hacer referencia a un campo si el paso anterior ya ha colocado el cursor dentro del campo de entrada que desea usar:
Para entradas multilínea:
Presionar teclas del teclado:
O puede presionar teclas de flecha de la siguiente manera:
|
copiar y pegar |
texto |
Copie el texto seleccionado (resaltado haciendo doble clic o arrastrando el ratón) al portapapeles:
Copiar texto desde una cadena (solo en modo con interfaz gráfica):
Copiar texto desde un valor guardado (solo en modo con interfaz gráfica):
Para pegar el texto copiado, haga clic en el campo de entrada y use uno de los siguientes comandos:
o simplemente
|
verificar |
página |
Verifique el contenido de la página por cadena:
o
Verificar el contenido de la página (incluidos los textos reconocidos por OCR) por cadena:
Verifique el contenido de la página usando únicamente textos reconocidos por OCR:
Verifique que la página no haya cambiado después de realizar alguna acción:
Nota: Esta acción compara las imágenes de la página píxel a píxel.
Verifique que la página no tiene un cuarto botón:
Validar la página con Vision AI:
Buscar problemas de interfaz de usuario/experiencia de usuario con Vision AI:
Las opciones de prioridad son: menor, grave, crítica, bloqueante. |
verificar |
elemento |
y
También puede validar si un campo de entrada, casilla de verificación, botón, etc. está deshabilitado, se puede hacer clic o está habilitado:
Verifique el valor almacenado en sí mismo:
Verifique que un elemento se vea igual que en el mismo paso durante la última ejecución exitosa:
Verifique que la pantalla completa se vea igual que durante la última ejecución exitosa:
Verifique que se haya recibido el SMS:
Verifique que el archivo se haya descargado y revise su contenido:
También puede reutilizar el archivo descargado o varios archivos para subirlos más adelante en la prueba. Para esto necesita la siguiente acción:
La variable "archivoDescargado" contendrá todos los archivos descargados después de la última verificación de archivos descargados. Luego, para subir el archivo en otra página, simplemente use la siguiente acción:
También puede extraer texto de un archivo descargado y guardarlo como una variable:
Verifique que un contenedor contenga un elemento en una posición específica:
Verifique que un elemento esté cambiando. Esto es útil para comprobar que un elemento que contiene una animación o video se esté actualizando (solo en pruebas de navegador web de escritorio y Android):
También puede usar una verificación negativa:
Validar un elemento con Vision AI:
|
verificar |
la afirmación es verdadera/la siguiente afirmación es correcta |
Utilice Vision AI para validar una afirmación sobre la página.
|
mantener presionado |
|
|
poner el cursor |
Usando IA para encontrar la ubicación de un elemento:
|
|
abrir nueva pestaña |
|
|
cambiar a la pestaña |
o
Nota: para facilitar el seguimiento de los números de pestañas, la configuración predeterminada de testRigor inicia cada caso de prueba en una nueva ventana del navegador.
Por lo tanto, la pestaña 1 siempre es aquella donde comienza el caso de prueba, y las pestañas 2, 3, etc., son las nuevas pestañas que se abren en orden durante la ejecución del caso de prueba.
Ten en cuenta que no se necesitan comillas para los números de pestañas; solo se usan comillas para los nombres de pestañas.
En el caso de ventanas emergentes (pop-ups), en lugar de un número de pestaña, deberás usar el nombre o título de la ventana emergente. |
|
cerrar pestaña |
|
|
ir atrás |
|
|
ir adelante |
|
|
refrescar pagina |
|
|
resetear a inicio |
|
|
reiniciar aplicación |
Reinicia la aplicación sin borrar los datos.
Nota: esta acción es solo para dispositivos móviles. |
|
arrastrar |
elemento, archivo |
O usando IA para encontrar la ubicación de los elementos:
O archivo:
O dibujar en un canvas:
Arrastre el mouse hacia varios puntos sin soltar el clic:
Si necesita arrastrar una carpeta con archivos, debe comprimirla en formato ZIP, subirla a la sección Test Data y usarla de la siguiente manera:
Nota: esta acción NO funciona en modo sin interfaz gráfica ni con Internet Explorer. |
desplazar |
abajo, arriba, izquierda, derecha |
O:
O usando IA para encontrar la ubicación del elemento:
Desplazamiento parcial:
También puede desplazarse directamente a una parte específica de la página:
O:
Usar el mouse:
En páginas con varias áreas de desplazamiento, también puede desplazarse hacia arriba o hacia abajo sobre una parte específica del texto utilizando la rueda del mouse:
Si el texto de destino está muy lejos del punto inicial de desplazamiento, puede enfocar el desplazamiento en el área del texto en lugar del texto mismo, utilizando la acción de la rueda del mouse en un bucle:
Nota importante: el método desplazar hasta que la página contiene funciona mejor en el modo Visible first. Visible first da prioridad solo a lo que es visible en la ventana o captura de pantalla. Batched mode amplía la visibilidad de testRigor a todo lo que esté cargado en la página, aunque no sea visible para el usuario final. (Para cambiar esta configuración, puedes encontrar el menú desplegable en Settings->Speed optimizations->Performance->Getting visibility of elements approach) |
deslizar |
abajo, arriba, izquierda, derecha |
O:
|
esperar |
tiempo |
Nota: máximo 2 minutos. |
llamar api |
URL |
O con más parámetros:
|
imitar llamada api |
URL, devolviendo (encabezados, cuerpo o código de estado HTTP). |
O con más parámetros:
|
obtener el valor |
Plantilla simple, expresión regular(RegEx), elemento, por descripción (usando IA). |
o, para obtener un valor de
UserName:53vhhsw1fi@testrigor-mail.com
o:
O, para obtener un valor usando una plantilla simple: simple template:
O:
O, para obtener el valor de un atributo del elemento:
O, para obtener el valor de una propiedad CSS del elemento.
O, para obtener un valor de la página usando IA:
O, para obtener un valor de un elemento usando IA: capturar valores por descripción
También puede obtener varios valores de una fila o columna de una tabla (el valor se almacenará como un array JSON).
|
extraer valor mediante expresión regular (regex) o plantilla |
elemento |
Por ejemplo, para extraer el valor del nombre de usuario de la variable
emailGenerado, que contiene UserName:53vhhsw1fi@testrigor-mail.com podría usar:
Por ejemplo, para extraer el número de ID de la variable
var1 , que contiene userID:123456, podría usar:
|
guardar valor |
|
|
guardar portapapeles |
El valor actual del portapapeles puede guardarse en una variable para su uso posterior:
|
|
abrir url |
URL |
Nota: ¡El dominio debe estar en la lista blanca! |
obtener url |
Puede obtener la URL actual del navegador y guardarla en una variable:
|
|
descargar archivo |
URL, nombre de usuario, contraseña |
Puede descargar un archivo mediante una URL para usarlo en acciones posteriores (como los comandos "verificar que archivo", "ingresar" o "subir archivo"):
Se admiten los protocolos HTTP, HTTPS, FTP, FTPS y SFTP.
La información de autenticación puede integrarse directamente en la URL
O especificarse por separado
|
subir archivo |
dispositivo, plantilla, URL, nombre de usuario, contraseña |
Puede subir un archivo a una URL (se admiten los protocolos FTP, FTPS y SFTP):
Como fuente, puede usarse un archivo de Test Data, un archivo guardado previamente o un archivo remoto mediante una URL. También puede generar un archivo nuevo basado en una plantilla:
Puede subir un archivo al dispositivo móvil activo actualmente en testRigor:
En este caso, el archivo se subirá a la carpeta Downloads del dispositivo Android. |
enviar email |
Así se envía un correo electrónico simple:
Para enviar un correo con archivo adjunto, puede subir el archivo en la sección "Test Data" de testRigor y usarlo por nombre como valor guardado. Alternativamente, use su propia URL (el enlace debe ser descargable).
|
|
verificar email |
O
De forma predeterminada, testRigor renderiza emails en un navegador de escritorio. Para mostrarlos en un dispositivo móvil (Android e iOS), agregue el sufijo:
and show in mobile. Ejemplo:
Puede usar ambos: remitente y destinatario
Por defecto se espera un solo correo. Varios correos provocarán error. Puede personalizar esto especificando cuántos correos espera o diciendo "uno o más".
Notas:
|
|
responder a email |
O
Nota: este comando renderizará el correo recibido (no la respuesta) como página web |
|
llamada |
número de teléfono |
O, simplemente:
|
sms |
número de teléfono |
O
|
establecer ubicación geográfica a (coordenadas GPS) |
|
|
iniciar navegador / iniciar dispositivo |
nombre |
Inicia un nuevo navegador con su propia sesión independiente.
Iniciar y cambiar:
Para dispositivo:
|
cambiar al navegador / cambiar al dispositivo / cambiar al escritorio remoto |
nombre |
Para dispositivo:
Volver al primer navegador:
Para escritorio remoto:
Nota: Este comando solo está disponible para suites de Escritorio Remoto de Windows. Volverá al primer escritorio remoto si se cambió a navegador durante la ejecución. |
cambiar el contexto a nativo / cambiar el contexto a navegador |
Cambia el contexto de las siguientes acciones a todo el dispositivo móvil (para pruebas de aplicaciones) o inicia el navegador móvil y usa solo su contenido (para pruebas web). |
|
comparar |
tipo de elemento |
Compara los elementos actuales en la pantalla con los que aparecían la última vez que se mostró esa pantalla.
La siguiente instrucción compara un elemento de la pantalla actual con el de la pantalla de referencia o con un archivo guardado, píxel por píxel. Si el elemento difiere, se guardarán las imágenes de referencia y de ejecución fallida para revisión.
La instrucción debe incluir una definición de imagen, como
imagen de texto "presionado", imagen de 3.er "Peter", etc. La tolerancia es opcional (por defecto 0). Si cambia el tamaño del elemento, se compara la intersección centrada. Los píxeles se comparan usando error cuadrático medio.De manera similar, puede usar una captura como referencia:
|
iniciar sesión |
Acción compleja. Identifica y realiza los pasos necesarios para iniciar sesión. |
|
explorar mapa del sitio / navegar mapa del sitio |
testRigor admite formatos de mapa del sitio XML y texto.
|
|
ejecutar JavaScript en el navegador |
testRigor admite la ejecución de JavaScript puro en el navegador.
|
|
aceptar alerta/indicador |
valor del indicador |
Las alertas/indicadores del navegador pueden aceptarse con un valor:
|
cambiar la orientación del dispositivo |
vertical, horizontal |
La orientación del dispositivo puede cambiarse a vertical u horizontal en Android/iOS:
|
zoom |
acercar, alejar, abrir, cerrar |
En pruebas móviles nativas (Android/iOS), el zoom puede aplicarse con el gesto de pellizcar:
El valor de zoom predeterminado es 50 % desde el centro de la pantalla. Es posible especificar la pantalla o el elemento de origen y un desplazamiento.
También puede usar "abrir/cerrar pellizco" en lugar de acercar/alejar (funcionan igual):
Puede especificar la velocidad (pulgadas por segundo), con valor predeterminado 1.
|
abrir el deeplink |
URL, paquete o bundle |
En pruebas móviles (web y nativas), se pueden abrir deeplinks pasando la URL:
Para información de paquete/bundle, puede pasarla explícitamente.
Ejemplo (Android, Maps):
En Android, si no se proporciona el paquete, se usará el predeterminado.
Ejemplo (iOS 17, accesibilidad en Ajustes):
En iOS, si no se proporciona el bundle, se usará la aplicación predeterminada para el esquema. |
instalar aplicación |
alias de aplicación móvil |
Se puede cargar una aplicación adicional en Settings-> Multiple applications e instalarla en el dispositivo Android/iOS de testRigor.
|
mantener tecla / soltar tecla |
Control, Shift, Alt, Command, F1–F12, Enter, Espacio, Suprimir, Retroceso |
El comando mantener tecla puede usarse en combinación con un clic.
Ejemplo de uso de mantener y soltar:
También puede usarse con IA:
|
establecer la imagen de la cámara en |
URL |
Establece imagen personalizada para la cámara. Funciona solo con Sauce Labs en dispositivos Android reales.
Se permiten archivos JPG, JPEG y PNG de hasta 5 MB.
También puede proporcionar un archivo de imagen como valor guardado:
|
habilitar touch ID/face ID, deshabilitar touch ID/face ID |
En iOS nativo, puede habilitar biometría con:
y para Face ID:
Para deshabilitar:
Este comando está relacionado con escanear usando. |
|
escanear usando |
touch ID y aprobado, face ID y aprobado, touch ID y fallido, face ID y fallido |
Responde con coincidencia válida o inválida cuando la aplcación iOS solicita biometría.
Para Touch ID (válido):
Para Face ID (válido):
Para coincidencia inválida:
Antes, asegúrese de habilitar la biometría del dispositivo (ver sección anterior). |
captura de pantalla |
Tome una captura adicional en cualquier punto del caso de prueba:
|
|
completar formulario |
completar formulario, completar los campos obligatorios del formulario, completar el resto del formulario, completar el resto de los campos obligatorios del formulario, identificado por campos, con valores generados, con valores de ejemplo, usando ai para campos no reconocidos, y omitir campos no reconocidos |
Completar solo campos detectados como obligatorios:
Completar solo campos vacíos sin valor seleccionado:
Completar solo campos obligatorios y vacíos:
Hay dos formas de identificar el formulario:
y:
Para usar valores generados:
Valores de ejemplo (configurables en "Default Values for Discovery"):
Para evitar rellenar campos no reconocidos con test 123:
o:
|
completar todos los campos |
completar todos los campos, completar todos los campos obligatorios, completar todos los campos vacíos, completar todos los campos vacíos y obligatorios, con valores generados, con valores de ejemplo, usando ai para campos no reconocidos, y omitir campos no reconocidos |
Solo campos obligatorios:
Solo campos vacíos:
Vacíos y obligatorios:
Con valores generados:
Con valores de ejemplo:
Evitar test 123 en campos no reconocidos:
o:
|
Reglas reutilizables (subrutinas)
Si tiene una secuencia de pasos que se utilizará con frecuencia, puede guardarla como una regla reutilizable y luego llamarla por el nombre que elija.
Ejemplo: Los primeros seis pasos del ejemplo siguiente le llevarán a la página de pago. Si realiza este proceso con frecuencia, cree una regla que simule todos esos pasos.
iniciar sesión
cliquear "Ropa de hombre"
desplazarse hacia abajo
cliquear "Shorts cargo de hombre"
cliquear "marrón"
cliquear "talle 34"
cliquear "Agregar al carrito"
verificar que la página contiene "Su orden está casi completa"
Luego, vaya a la sección Reusable Rules en testRigor, asigne el nombre "ir a la página de pago" a su regla y agregue los primeros seis pasos mencionados anteriormente.
A partir de ese momento, podrá usar la siguiente sintaxis para ejecutar los seis pasos:
ir a la página de pago
verificar que la página contiene "Agregar al carrito"
También puede crear reglas con parámetros dinámicos.
Nombre de la regla:
buscar "producto", cliquear en el link y luego presionar "botón"
Pasos: (Vamos a crear variables con el mismo nombre que definas entre comillas).
ingresar valor guardado "producto" en "búsqueda"
cliquear enlace valor guardado "producto"
cliquear enlace valor guardado "botón"
Luego puede llamar a la regla así:
buscar "Computadora", cliquear en el enlace y presionar "añadir al carrito"
Las variables definidas tienen un ámbito limitado y solo pueden accederse dentro de la regla.
Reglas reutilizables integradas
La siguiente lista de reglas reutilizables integradas está disponible en todas las suites de prueba:
-
registrarse con confirmación por correo electrónico -
registrarse -
Mas detallesiniciar sesión -
iniciar sesión con OTP por correo electrónico -
cerrar sesión -
seleccionar "mm/dd/yyyy" de "elemento" -
seleccionar fechas desde "mm/dd/yyyy" hasta "mm/dd/yyyy" -
comprar "producto" -
buscar por "algo"
Reglas reutilizables integradas para Salesforce
Si se detecta que la URL de la suite corresponde a Salesforce, estarán disponibles las siguientes reglas para su uso:
-
navegar a "nombre de objeto" utilizando el iniciador de aplicaciones -
asegurarse de que estamos en la página "nombre de objeto" -
crear un nuevo "nombre de objeto" -
abrir las acciones de la lista para "nombre de objeto" -
editar el elemento de la lista "nombre de objeto" -
eliminar el elemento de la lista "nombre de objeto" -
cambiar el propietario del elemento de la lista "nombre de objeto" -
editar las etiquetas del elemento de la lista "nombre de objeto" -
buscar "texto" en esta lista -
validar que la lista contiene "n" elementos -
buscar "texto" de tipo "tipo de objeto" y abrir -
verificar que existe el objeto que contiene "texto" de tipo "tipo de objeto" -
verificar que no existe el objeto que contiene "texto" de tipo "tipo de objeto" -
abrir edición para "variable" en la tabla -
cambiar el valor de la tabla de "variable antigua" a "variable nueva" -
seleccionar "variable" de "nombre de campo" en Salesforce -
buscar y seleccionar “variable" de "nombre de campo" en Salesforce
Referencias de ubicaciones y elementos
Todas las referencias deben escribirse entre comillas dobles, que pueden escaparse con una barra invertida. Hay varias formas de referirse a los elementos (para verificaciones, clics, ingreso de datos, etc.).
Atributos
Atributos compatibles con los que {{product} puede interactuar. Los atributos se buscan sin necesidad de hacer referencia a ellos en el script. El comando
verificar que la página contiene "Peter"buscará entre los elementos que contengan los siguientes atributos:Atributos para pruebas en navegador web de escritorio y navegador web móvil
Las pruebas en navegador (escritorio y móvil) priorizan primero el texto visible, procesando los elementos como lo haría una persona. Los siguientes atributos se consideran en orden:
- Texto - ejemplo
- Marcador de posición (placeholder) - ejemplo
- Valor - ejemplo
- data-tid/data-testid/data-test-id/id/resource-id/data-id - ejemplo
- Nombre (name) - ejemplo
- aria-label - ejemplo
- Clase CSS - ejemplo
- Etiqueta desde clasificación ML - ejemplo
- Pista/Título/Tooltip - ejemplo
- Alt/Src - ejemplo
- Para inputs/edits/desplegables/selectores/etc. también se buscará la etiqueta correspondiente - ejemplo
*Nota: además de los atributos mencionados, se pueden añadir atributos personalizados para pruebas en navegador de escritorio en Settings => Advanced => Custom attributes to consider for finding elements new line separated.
Atributos para pruebas de aplicaciones móviles nativas
Las aplicaciones móviles nativas admiten los siguientes atributos:
Android
- content-desc
- class (p. ej.,
android.widget.TextView) - resource-id
- texto/etiqueta
iOS
- accessibility-id
- XCUIElementType
- name
- texto/etiqueta
*Nota: las aplicaciones híbridas probadas en la infraestructura de testRigor usan atributos tanto de aplicaciones web como nativas.
Atributos para pruebas de aplicaciones de escritorio remoto (solo disponible si Windows Application Driver está correctamente configurado)
- AutomationId
- Nombre
Índices genéricos
Se permiten índices genéricos cuando hay múltiples instancias del mismo elemento en la página. Por ejemplo:
verificar que el color del segundo "Peter" es "ffaabb"
verificar que en el 2.º "Peter" el color es "ffaabb"
ejemplo
Tipos
Los tipos permiten diferenciar elementos con el mismo nombre en pantalla. Por ejemplo, si hay un botón y un campo llamados "Buscar" y desea hacer clic en el botón, especifique
cliquear en el botón "Buscar". Tipos admitidos:- texto - ejemplo
- etiqueta (label) - ejemplo
- botón - ejemplo
- enlace - ejemplo
- campo de entrada (input/edit/field) - ejemplo
- desplegable (dropdown/selector) - ejemplo
- casilla de verificación (checkbox/switch) - ejemplo
- botón de opción (radiobutton) - ejemplo
- entrada de archivo (o “archivo de entrada”, o "editar archivo" o "archivo de tipo de entrada"): específicamente una entrada de tipo archivo - ejemplo
Índices tipados
Los índices tipados son una combinación de índices generales y tipos. Por ejemplo,
verificar que el color de la segunda entrada "Peter" es "ffaabb" encontrará la segunda entrada/edición llamada "Peter".Valor almacenado para controles
El valor almacenado para controles es el uso de una variable para encontrar un elemento o control. Por ejemplo,
verificar que el color de la variable almacenada "Peter" es "ffaabb" resolverá el valor almacenado para "Peter" y utilizará ese valor resuelto para encontrar el control.Clase de imagen
La clase de imagen utiliza la tecnología de reconocimiento de imágenes para identificar íconos comunes. Por ejemplo,
cliquear en "carrito". testRigor clasifica las imágenes en la pantalla y si hay un botón que se parece a un carrito de compras hará clic en él. La lista completa de todas las categorías de imágenes de botones está aquí.Valor almacenado para datos
Por ejemplo,
verificar que "Peter" contiene el valor almacenado "notaDeAcción" encontrará la segunda entrada/edición relacionada con "Peter".Todas las formas anteriores para referenciar un elemento aplican a acciones como verificar, ingresar, cliquear, etc. Las opciones pueden combinarse.
Compatibilidad de referencias múltiples
Las referencias múltiples nos permiten utilizar
o en casos en los que el elemento al que nos dirigimos tenga dos nombres posibles. En algunos casos, es posible que ciertos elementos tengan nombres diferentes pero signifiquen lo mismo. Ejemplo:cliquear "pagar" o "enviar"
También puede combinarse con "si existe" para evitar que falle si el elemento no existe:
cliquear "Finalizar compra" o "enviar" si existe
Seleccionar elementos en referencia a otros elementos
Puede seleccionar elementos basándose en su posición en relación con algún otro elemento (también conocido como "ancla"). Por ejemplo, puede hacer referencia a elementos en ciertas secciones como:
cliquear en el botón "Borrar" abajo de "Acciones"
Las ubicaciones relativas admitidas son:
a la izquierda de- ejemploa la derecha de- ejemploarriba de- ejemplodebajo de- ejemploen la parte superior derecha de- ejemploen la parte superior izquierda de- ejemploen la parte inferior derecha de- ejemploen la parte inferior izquierda de- ejemplocerca de- ejemplo
También puede referirse a los elementos mediante 2 referencias:
cliquear botón "Borrar" abajo de "Sección nombre" a la derecha de "etiqueta"
Por defecto, testRigor tendrá en cuenta los elementos que se encuentren al menos a un 30 % del área de destino (las líneas amarillas que se extienden desde el ancla en las capturas de pantalla). Cuando el elemento está situado a menos del 30 % entre el área de destino, se pueden utilizar ciertas palabras clave para especificar cómo se debe utilizar la posición relativa:
aproximadamente— se utiliza para buscar un elemento en cualquier lugar de la pantalla en la dirección de la posición relativa especificada a partir del ancla (por ejemplo, cualquier lugar por debajo del ancla para "abajo de", cualquier lugar a la derecha del ancla para "a la derecha de") — ejemplocon al menos "10" por ciento de superposiciónse utiliza para especificar cuando menos del 30 % del elemento cae entre el área de destino — ejemplocompletamente— Dado que la primera ubicación relativa de un comando tiene por defecto el valor "aproximadamente" cuando hay varias anclas, esta palabra clave permite que la primera ubicación relativa conserve su significado por defecto (es decir, solo es necesaria cuando se especifica más de un ancla y es necesario mantener el significado por defecto de la ubicación relativa) — ejemplo
Por ejemplo:
ingresar "Peter" aproximadamente debajo de "Sección"
ingresar "Peter" en elemento con al menos "1" por ciento de superposición a la derecha de "Descripción"
Con dos anclas, la primera se interpreta como aproximadamente por defecto y la segunda con el comportamiento estándar:
ingresar "Peter" en "Sección" debajo de "Tipo" y a la derecha de "Descripción"
equivale a:
ingresar "Peter" en "Sección" aproximadamente debajo de "Tipo" y a la derecha de "Descripción"
Para mantener el significado por defecto de “debajo de” use:
ingresar "Peter" en "Sección" completamente debajo de "Tipo" y a la derecha de "Descripción"
Seleccionar elementos en el contexto de otros elementos
Puede seleccionar elementos dentro del contexto de otro contenedor. Por ejemplo, apuntar a una fila de tabla y hacer clic en un botón en esa fila:
clic en "Borrar" dentro del contexto de la tabla "acciones" en la fila que contiene "id1" y columna "Acciones"
También puede usar referencias relativas dentro del contexto:
cliquear en "Borrar" dentro del contexto de "secciónDos" debajo de "Acciones" y a la derecha de "nombreDeFila"
Seleccionar usando referencias y contexto a la vez
Puede acotar dónde buscar combinando el contexto con referencias relativas.
- Primero se procesa el contexto (limita el área).
- Luego se aplican las referencias relativas dentro de ese contexto.
cliquear en "Botón" debajo de "Título" en el contexto de "secciónUno"
cliquear en "Botón" debajo de "Título" y a la derecha de "encabezadoIzquierdo" en el contexto de "secciónDos"
Incluso puede especificar hasta cuatro referencias:
cliquear en "Botón" debajo de "Subtítulo" y a la derecha de "encabezadoIzquierdo" en el contexto de "secciónUno" debajo de "Título" y arriba de "Segundo Título"
Especificar el tipo de elemento
Puede forzar al sistema a considerar solo un tipo. El siguiente comando no hará clic en texto que no sea botón o enlace:
cliquear estrictamente en el botón "Borrar"
Sensibilidad a mayúsculas y coincidencias exactas
Puede exigir coincidencia exacta/sensible a mayúsculas:
cliquear exactamente en "Borrar"
Combínelo con tipo estricto:
cliquear estrictamente en el botón exactamente "Borrar"
Modificadores admitidos para la cadena buscada:
sensible a mayúsculas y minúsculasexactamente– la cadena completa sensible a mayúsculas debe ser exactamente igualcadena completa– no distingue necesariamente entre mayúsculas y minúsculascontiene plantilla– contiene una subcadena que coincide con una plantilla simplecontiene regex– contiene una subcadena que coincide con una expresión regularcoincide con plantilla– toda la cadena coincide con una plantilla simplecoincide con regex– toda la cadena coincide con una expresión regularestrictamente menor– lexicográficamente estrictamente anterior (las cadenas vacías siempre son no menores)menos o igual– lexicográficamente antes o igual (las cadenas vacías siempre son no menores o iguales)estrictamente más– lexicográficamente estrictamente posterior (las cadenas vacías siempre son no más)más o igual– lexicográficamente más tarde o igual (las cadenas vacías siempre son no más o iguales)
Afinar el alcance
Si el objetivo es demasiado amplio, puede forzar ir al elemento más profundo:
clic en el elemento más profundo "Borrar"
O al elemento contenedor (más superficial):
cliquear el elemento contenedor "Borrar"
Especificar posición en pantalla
Es posible (aunque no recomendado por estabilidad) usar desplazamientos para hacer clic en una parte específica de un elemento:
cliquear "Borrar" con desplazamiento "20,10"
El desplazamiento se calcula desde la esquina superior izquierda (X,Y). También se pueden usar posiciones genéricas:
cliquear en el centro de la pantalla
Posiciones admitidas (todas en español):
en el centro de la pantalla- ejemploen el cuarto superior de la pantalla- ejemploen el segundo cuarto superior de la pantalla- ejemploen el cuarto inferior de la pantalla- ejemploen el segundo cuarto inferior de la pantalla- ejemploen el tercio superior de la pantalla- ejemploen el tercio inferior de la pantalla- ejemploen el cuarto izquierdo de la pantalla- ejemploen el segundo cuarto izquierdo de la pantalla- ejemploen el cuarto derecho de la pantalla- ejemploen el segundo cuarto derecho de la pantalla- ejemploen el tercio izquierdo de la pantalla- ejemploen el tercio derecho de la pantalla- ejemploen el lado izquierdo de la pantalla- ejemploen el lado derecho de la pantalla- ejemploen la parte superior de la pantalla- ejemploen la parte inferior de la pantalla- ejemploen el borde izquierdo de la pantalla- ejemploen el borde derecho de la pantalla- ejemploen el borde superior de la pantalla- ejemploen el borde inferior de la pantalla- ejemploen la esquina superior izquierda de la pantalla- ejemploen la esquina superior derecha de la pantalla- ejemploen la esquina inferior izquierda de la pantalla- ejemploen la esquina inferior derecha de la pantalla- ejemplo
Soporte de valores guardados (variables)
Para usar una variable en lugar de una cadena explícita, añada "valor almacenado" o "valor guardado" antes de la variable:
verificar que el color de valor almacenado "notasDeAcción" es "ffaabb"
verificar que "Peter" contiene valor almacenado "notaDeAcción"
cliquear en valor almacenado "notasDeAcción"
verificar que la página contiene valor almacenado de "notasDeAcción"
ejemplo
testRigor permite generar valores aleatorios basados en RegEx, guardarlos y utilizarlos más adelante en la prueba. Por ejemplo:
generar desde regex "[a-z]{10,18}", luego ingresar en "Notas" y guardar como "notasDeAcción"
Existen 2 valores guardados especiales:
"username" y "password", que provienen de la configuración de credenciales específicas de la aplicación para su suite de pruebas. Con ellos puede hacer lo siguiente:ingresar valor almacenado "username" en "campoDeUsuario"
ingresar valor almacenado "password" en "campoDeContraseña"
Estas credenciales almacenadas también son usadas por el comando
login. Además, puede usar variables guardadas como parámetros en la mayoría de los comandos añadiendo un $ y llaves (${variableName}):ingresar desde la cadena con parámetros "${homePrefix}/my/path" en "rutaUrl"
*Tenga en cuenta que usar
$ y llaves con las palabras clave cadena con parámetros permite concatenar o unir variables entre sí o con valores estáticos dentro de las comillas.Cálculos y ecuaciones
También puede calcular expresiones como esta:
verificar que la expresión "${a} + ${b}" en sí misma es igual como número a "42"
o como esta:
guardar expresión "${a} + ${b}" como "respuesta"
testRigor es compatible con expresiones ECMAScript 5.1.
Por ejemplo, puede calcular para comprobar que un año de hace 30 días está presente en la pantalla:
verificar que la página contiene expresión "var aDate=new Date();aDate.setDate(aDate.getDate()-30);''+aDate.getFullYear()"
Variables predefinidas
testRigor es compatible con los siguientes valores guardados predefinidos:
- username -
ingresar valor almacenado "username" en "Email"ejemplo - password -
ingresar valor almacenado "password" en "Contraseña"ejemplo - homeDomain - (desde la URL en Detalles de la Suite: www.example.com)
abrir URL desde cadena con parámetros "https://${homeDomain}/cart/checkout/confirm"ejemplo - homeFile - (desde la URL en Detalles de la Suite: /cart/checkout/confirm)
abrir URL desde cadena con parámetros "https://www.example.com${homeFile}"ejemplo - homePrefix - (desde la URL en Detalles de la Suite: https://www.example.com)
abrir URL desde cadena con parámetros "${homePrefix}/cart/checkout/confirm"ejemplo - todayYear - (2023)
ingresar valor almacenado "todayYear" en "YYYY"ejemplo - todayYearShort - (23)
ingresar valor almacenado "todayYearShort" en "Año"ejemplo - todayMonthNumber - (9)
ingresar valor almacenado "todayMonthNumber" en "Mes"ejemplo - todayMonthNumberTwoDigits - (09)
ingresar valor almacenado "todayMonthNumberTwoDigits" en "Mes"ejemplo - todayMonth - (September)
cliquear valor almacenado "todayMonth"ejemplo - todayMonthShort - (Sep)
cliquear valor almacenado "todayMonthShort"ejemplo - todayDayOfMonth - (2)
ingresar valor almacenado "todayDayOfMonth" en "Month"ejemplo - todayDayOfMonthTwoDigits - (02)
ingresar valor almacenado "todayDayOfMonthTwoDigits" en "Month"ejemplo - todayDayOfWeek - (Monday)
ingresar valor almacenado "todayDayOfWeek" en "Day"ejemplo - todayDayOfWeekShort - (Mon)
ingresar valor almacenado "todayDayOfWeekShort" en "Día"ejemplo - nowHour - (2 o 14)
seleccionar valor almacenado "nowHour" de "Hora de inicio"ejemplo - nowHourTwoDigits - (02 o 14)
seleccionar valor almacenado "nowHourTwoDigits" de "Hora de inicio"ejemplo - nowHourAmPm - (2)
seleccionar valor almacenado "nowHourAmPm" de "Itinerario"ejemplo - nowHourTwoDigitsAmPm - (02)
seleccionar valor almacenado "nowHourTwoDigitsAmPm" de "Itinerario"ejemplo - nowAmPm - (PM)
seleccionar valor almacenado "nowAmPm" de "Hora del día"ejemplo - nowMinute - (5)
ingresar valor almacenado "nowMinute" en "Hora de inicio"ejemplo - nowMinuteTwoDigits - (05)
ingresar valor almacenado "nowMinuteTwoDigits" en "Hora de inicio"ejemplo - nowSecond - (7)
ingresar valor almacenado "nowSecond" en "Seg"ejemplo - nowSecondTwoDigits - (07)
ingresar valor almacenado "nowSecondTwoDigits" en "Seg"ejemplo - nowNanosecond - (355881000)
guardar cadena con parámetros "email${nowNanosecond}@testrigor-mail.com" como "emailNuevo"ejemplo - nowDateIso - (2023-09-02)
guardar valor almacenado "nowDateIso" como "fechaActual"ejemplo - nowTimeIso - (02:05:07)
guardar valor almacenado "nowTimeIso" en "horaActual"ejemplo - nowDateTimeIso - (2023-09-02T02:05:07.165068-07:00[America/Los_Angeles])
guardar valor almacenado "nowDateTimeIso" como "fechaHoraActual"ejemplo - nowMillisecondsFrom1970 - (1637061365335)
guardar valor almacenado "nowMillisecondsFrom1970" como "marcaDeTiempo"ejemplo - nowDateTimeRFC1123UTC - (Mon, 16 Sep 2023 16:32:41 GMT)
guardar valor almacenado "nowDateTimeRFC1123UTC" como "fechaHoraActual"ejemplo - nowUnixTime - (1637061404)
guardar valor almacenado "nowUnixTime" como "horaUnixActual"ejemplo - testSuiteParentFolder -
ingresar valor almacenado "testSuiteParentFolder" en "Campo nombre"ejemplo - testSuitePath -
ingresar valor almacenado "testSuitePath" en "Campo nombre"ejemplo - testSuiteName -
ingresar valor almacenado "testSuiteName" en "Campo nombre"ejemplo - testCaseName -
ingresar valor almacenado "testCaseName" en "Campo nombre"ejemplo - testCaseExecutionLink -
ingresar valor almacenado "testCaseExecutionLink" en "Campo nombre"ejemplo - currentUrl -
guardar valor almacenado "currentUrl" como "url"ejemplo - browser -
guardar valor almacenado "browser" como "nombreDeVariable" - device -
guardar valor almacenado "device" como "nombreDeVariable" - provider -
guardar valor almacenado "provider" como "nombreDeVariable" - os -
guardar valor almacenado "os" como "nombre de variable" - osVersion -
guardar valor almacenado "osVersion" como "nombreDeVariable" - abi -
guardar valor almacenado "abi" como "nombreDeVariable" - appFileName - (solo para iOS, Android, sandbox)
guardar valor almacenado "appFileName" como "nombreDeVariable"
testRigor también permite extraer valores de elementos en pantalla y guardarlos en variables para uso posterior. Por ejemplo:
obtener valor de "someElement" y guardarlo como "miEmail"
obtener valor de la entrada "someEdit" y guardarlo como "miEmail"
También puede obtener un conjunto de valores de una fila o columna de una tabla (el valor se almacenará como un arreglo JSON).
obtener valores de la tabla "someTable" en la columna "someColumn" y guardarlos como "someColumnValues"
obtener valores de la tabla "someTable" en la primera fila y guardarlos como "firstRowValues"
Puede definir variables directamente sin ingresarlas en ningún campo. Por ejemplo:
generar desde regex "[a-z]{10,18}" y guardar como "notasDeAcción"
guardar valor "Peter" como "nombre"
Ejecución de acciones en bucle
testRigor tiene soporte limitado para ejecutar comandos hasta que se cumpla una condición. Por ejemplo:
cliquear en "Siguiente" hasta que la página contenga valor almacenado "idGeneradoPreviamente"
Se puede usar para avanzar por páginas en listas largas o desplazarse hasta que cierto texto o botón sea visible. Por defecto, la acción se ejecutará hasta 10 veces, pero puede ampliar el máximo añadiendo "hasta":
cliquear en "Siguiente" hasta 12 veces hasta que la página contenga estrictamente botón "Hacer pedido"
También puede hacer lo mismo con reglas:
Ir a la siguiente página hasta que la página contenga valor almacenado "idGeneradoPreviamente"
Hacer algo hasta 12 veces hasta que la página contenga estrictamente botón "Hacer pedido"
También puede esperar a que un elemento aparezca (o desaparezca) con un tiempo de espera. Por ejemplo:
esperar hasta 20 segundos hasta que la página contenga "botón no existente"
Validaciones
Puede realizar múltiples tipos de validaciones como se describe a continuación. De forma predeterminada, las validaciones son "suaves", lo que significa que la ejecución del caso de prueba continuará incluso si la validación falla. Puede tener validaciones "duras" añadiendoy detener la prueba si falla al final de la validación.
Las validaciones se admiten para múltiples aspectos como:
- Encontrar algo en la pantalla/página
- Validar propiedades o contenido de un elemento / encontrar un elemento con propiedades y contenido dados
- Validaciones visuales (colores, coincidencia de imágenes de elementos con versiones posteriores)
- Validaciones de archivos descargados
- Validaciones de audio (solo Ubuntu)
- Validaciones de vídeo (solo pruebas en navegador web de escritorio)
- Validaciones de correo electrónico
- Validaciones de SMS
- Validaciones de llamadas telefónicas
- Validaciones matemáticas / cálculos de fórmulas (incluso para datos que parecen financieros como -$30,000.23)
- Validaciones de API integradas
- Pruebas de extensiones de Chrome
- Validaciones basadas en IA para evaluar si ciertas afirmaciones son verdaderas
- Validaciones exploratorias donde puede pedir a la IA que busque problemas obvios en la pantalla
- Y muchas más
Para validaciones de página completa, URL y título de página, admitimos las siguientes aserciones positivas y negativas:
- contiene/no contiene (texto). Por ejemplo,
verificar que la página contiene "Error" - contiene plantilla/no contiene plantilla (texto). Por ejemplo,
verificar que la página contiene la plantilla "###-###-####" - contiene regex/no contiene regex (texto). Por ejemplo,
verificar que la página contiene la expresión regular "(+\d )?\d{3}-\d{3}-\d{4}" - el código de respuesta es. Por ejemplo,
verificar que el código de respuesta de la página es "404" - no cambió respecto del paso anterior. Por ejemplo,
verificar que la página no cambió respecto del paso anterior - la url comienza con/la url no comienza con. Por ejemplo,
verificar que la url comienza con "https" - la url contiene/la url no contiene. Por ejemplo,
verificar que la url contiene "example.com" - la url es/la url no es. Por ejemplo,
verificar que la url es "https://example.com/docs/language/" - la url termina con/la url no termina con. Por ejemplo,
verificar que la url termina con "https://example.com/docs/language/" - la url coincide con regex/la url no coincide con regex. Por ejemplo,
verificar que la url coincide con la regex "https://example\.com/docs/\w+/" - el título es. Por ejemplo,
verificar que el título de la página es "testRigor - Documentación" - el título contiene. Por ejemplo,
verificar que el título de la página contiene "ejemplo"
Para validaciones específicas de elementos, admitimos las siguientes aserciones positivas y negativas:
- contiene/no contiene (texto) - ejemplo/ejemplo
- está en blanco/no está en blanco - ejemplo/ejemplo
- coincide con regex/no coincide con regex - ejemplo/ejemplo
- coincide con plantilla simple/no coincide con plantilla simple -
verificar que "sección1" coincide con la plantilla simple "$########" - contiene plantilla simple/no contiene plantilla simple -
verificar que "sección1" contiene la plantilla simple "$########" - contiene regex/no contiene regex -
verificar que "sección1" contiene la regex "[A-Z][a-z]+" - antes en orden lexicográfico -
verificar que "sección1" está antes en orden lexicográfico que "zzzz"(la cadena vacía no es anterior a nada) - antes o igual en orden lexicográfico -
verificar que "sección1" está antes o igual que "zzzz"(la cadena vacía no es anterior ni igual a nada) - después en orden lexicográfico -
verificar que "sección1" está después en orden lexicográfico que "AAAA"(la cadena vacía no es posterior a nada) - después o igual en orden lexicográfico -
verificar que "sección1" está después o igual que "AAAA"(la cadena vacía no es posterior ni igual a nada) - tiene valor/no tiene valor (para inputs/áreas de texto) - ejemplo/ejemplo
- está marcado/no está marcado - ejemplo/ejemplo
- está deshabilitado/está habilitado - ejemplo/ejemplo
- es visible/es invisible - ejemplo/ejemplo
- el color es - ejemplo
- se puede hacer clic/no se puede hacer clic - ejemplo/ejemplo
- el cursor es - ejemplo
- tiene clase CSS - ejemplo
- el color de fondo es - ejemplo
- tiene propiedad - ejemplo
- tiene opciones seleccionadas (para desplegables etiquetados como
<select>) - ejemplo - tiene/no tiene atributo -
verificar que el valor almacenado "textoAncla" tiene el atributo "rel" igual a "nofollow"
verificar que el color de "elemento" es "ffaabb"
verificar que el input "input" tiene el valor "value"
verificar que la casilla "Mantener la sesión iniciada" está marcada y detener la prueba si falla
verificar que la casilla "Mantener la sesión iniciada" no está marcada
Validar que un input no tiene valor:
verificar que el input "input" tiene el valor ""
Validar que un elemento tiene alguna propiedad:
verificar que la propiedad "background-color" de "my-div" es igual a "black"
verificar que la propiedad "width" de "my-div" es igual como número a "310px"
verificar que la propiedad "height" de "my-div" es mayor o igual que "170"
Validar que un elemento tiene (o no tiene) un atributo específico:
verificar que el atributo "rel" del botón con valor almacenado "Anchor Text" no contiene "no-follow"
verificar que el valor almacenado "Anchor Text" tiene el atributo "rel" igual a "nofollow"
Para valores almacenados —incluyendo validaciones de retorno de API, valores obtenidos de la pantalla y valores extraídos de texto— admitimos (positivas y negativas):
- coincide con regex/no coincide con regex - ejemplo/ejemplo
- contiene/no contiene - ejemplo/ejemplo
- es igual a/no es igual a - ejemplo/ejemplo
- es nulo/no es nulo - ejemplo/ejemplo
- está en blanco/no está en blanco - ejemplo/ejemplo
Debe usar la palabra
en sí mismo para validar directamente un valor almacenado:llamar api "https://example.com" y guardarlo como "nombreDeVariable"
verificar que el valor almacenado "nombreDeVariable" en sí mismo contiene "James"
La clave para probar resultados de API es guardarlos en un valor almacenado y luego validar sobre el valor almacenado en sí (con las palabras clave
en sí mismo) como se mostró arriba.Tanto las validaciones de elementos como las de valores almacenados admiten:
- es igual como número a/no es igual como número a - ejemplo/ejemplo
- es mayor que - ejemplo
- es mayor o igual que - ejemplo
- es menor que - ejemplo
- es menor o igual que - ejemplo
También puede utilizar validaciones que aplican a toda la pantalla/página:
- la página contiene/la página no contiene - ejemplo/ejemplo
- la página tiene regex/la página no tiene regex - ejemplo/ejemplo
- el código de respuesta de la página es
- el título es - ejemplo
- el título contiene - ejemplo
- la url es/la url no es - ejemplo/ejemplo
- la url contiene/la url no contiene - ejemplo/ejemplo
- la url comienza con/la url no comienza con - ejemplo/ejemplo
- la url termina con/la url no termina con - ejemplo/ejemplo
- la url coincide con regex/la url no coincide con regex - ejemplo/ejemplo
Por ejemplo, puede combinar valores almacenados para validar:
verificar que la url coincide con regex desde la cadena con parámetros "${homePrefix}/product/${type}/[0-9A-Za-z\-]+"
Pruebas basadas en IA
Puede usar cuatro tipos de pruebas puramente basadas en IA. Sin embargo, tenga cuidado porque la IA puede alucinar y dar respuestas incorrectas.- Solicitar validaciones específicas a la IA:
ejemploverificar que la página "contiene un mensaje positivo en la respuesta del chat" usando ia - Usar IA para encontrar un elemento en la pantalla por descriptor:
ejemplocliquear "ícono del carrito" usando ia - Usar IA para obtener un valor de la pantalla por descriptor:
ejemploobtener valor por descripción "nombre del producto del anuncio más grande" usando ia y guardarlo como "anuncio" - Pedir a la IA que identifique problemas de UI presentes en la pantalla:
ejemploverificar errores de UI en la página
Validaciones específicas de IA en la pantalla
Puede configurar validaciones para confirmar que una afirmación es verdadera sobre la pantalla actual:verificar que la página "contiene un mensaje positivo en la respuesta del chat" usando ia
Vea ejemplo. Alternativamente, puede escribirlo así:
verificar que la afirmación es verdadera "la página contiene el logo de testRigor"
También puede pedir a la IA que valide afirmaciones sobre elementos específicos en la pantalla:
verificar que "elemento" "contiene un mensaje positivo" usando ia
Vea ejemplo
Uso de IA para encontrar elementos
Cuando no sepa cómo especificar un localizador de elementos, use un identificador descriptivo y deje que la IA lo encuentre en el comando, por ejemplo:cliquear "ícono de alarma" usando ia
ingresar "algo" en "barra de búsqueda superior" usando ia
pasar el cursor sobre "menú de aplicaciones" usando ia
Esto puede usarse en muchos comandos, como cliquear, enter, arrastrar, poner el cursor o desplazar.
Obtener valores usando IA
La IA puede extraer valores de la UI según una descripción que usted proporcione del elemento objetivo. Ejemplo:obtener valor por descripción "número de teléfono de 10 dígitos" usando ia y guardarlo como "númeroDeTeléfono"
Aquí, número de teléfono de 10 digítos es el prompt dado a la IA. La IA localiza el elemento que mejor coincide con la descripción y recupera su valor.
Si quiere limitar la búsqueda a una sección específica de la UI en lugar de escanear toda la página, incluya el nombre del elemento o del área en el comando.
Ejemplo:
obtener valor por descripción "número de teléfono de 10 dígitos" desde "Formulario de contacto" usando ia y guardarlo como "númeroDeTeléfono"
Esto es útil cuando el mismo tipo de valor aparece varias veces en la página. En ese caso, la IA solo obtendrá el número de teléfono de 10 dígitos que esté dentro del Formulario de contacto.
La IA descubre problemas por sí sola
También le puede pedir a la IA que encuentre problemas en una pantalla. Puede especificar un umbral de severidad para los problemas:verificar errores de UI en la página
verificar errores de UI en la página reportando errores críticos o superiores
verificar errores de UI en la página tratando los errores como críticos o inferiores
verificar errores de UI en la página reportando errores críticos o superiores tratando los errores como críticos o inferiores
verificar errores de UI en la página tratando los errores como críticos o inferiores reportando errores críticos o superiores
Vea ejemplo
Pruebas visuales
Puede verificar los cambios visuales en la pantalla utilizando los siguientes pasos de ejemplo:
comparar pantalla
comparar captura de pantalla con la versión anterior
comparar pantalla con la versión anterior con una tolerancia del "1 %" considerando el error como "menor"
comparar pantalla con la versión anterior considerando el error como "menor"
*Recuerde que esto verifica que toda la pantalla se vea igual que en este paso durante la última ejecución exitosa.
Es posible guardar una captura de pantalla de ejemplo en Test Data y utilizarla como punto de comparación en lugar de la imagen de pantalla guardada anteriormente:
comparar pantalla con variable almacenada "capturaGuardada"
En cuanto al parámetro de gravedad, los valores permitidos son "menor", "mayor", "crítico" o "bloqueador". El valor por defecto es "crítico", que marca el caso de prueba como fallido. Del mismo modo, existe la opción de utilizar la cláusula "tolerancia", una diferencia mínima aceptable en porcentajes. Cualquier diferencia por debajo de este valor será ignorada. Puede que tenga que experimentar con este parámetro. En cualquier caso, puede encontrar la discrepancia real en "Extra info" para un paso concreto. En los dispositivos móviles ignoramos la barra de estado de la parte superior. Esto es así porque hay una marca de tiempo que puede ser diferente para cada captura de pantalla.
Hacer clic en imágenes específicas con pruebas visuales
testRigor también ofrece soporte visual para hacer clic en imágenes mediante indexación para los casos en que las imágenes o íconos no tengan una forma sencilla de ser referenciados. Para ello, recorte la imagen deseada de una captura de pantalla o archivo en su resolución completa y guárdela en la sección de Test Data. Para referirse a ella en su caso, utilice la siguiente sintaxis:
cliquear en el 6to elemento por imagen de la variable almacenada "logo" con una discrepancia inferior al "10" %
Si solo hay una imagen que desea que testRigor reconozca, utilice lo siguiente:
cliquear en la imagen de la variable almacenada "logo" con una discrepancia inferior al "10" %
Es posible que tenga que alternar los porcentajes de discrepancia para que testRigor reconozca la imagen.
Trabajar con tablas
Puede referirse a las celdas de una tabla por la intersección de la fila y la columna proporcionando el valor de la primera celda de la fila y el valor de la celda de cabecera/superior de la columna. Por ejemplo, con el siguiente comando:
cliquear en tabla “Acciones” en la fila “103" y en la columna “Acciones”
Para la tabla
| # | Id | Nombre | Acciones | Datos adicionales |
|---|---|---|---|---|
| Filter by | ||||
| 101 | york1 | Yorktown | Llegar Cancelar | |
| 102 | spk2 | Spock | Escuchar Ignorar | |
| 103 | nyo3 | Nyota | Abrir canal Promocionar |
dará como resultado un cliquear en "Abrir canal".
También puede especificar la fila diciendo que la fila debe contener un valor determinado. De esta forma comprobaremos todos los valores de cada fila para encontrar el que coincida. Por ejemplo, para la misma tabla anterior, y comando:
cliquear en tabla "acciones" en la fila que contiene "spk2" y la columna "Acciones"
dará como resultado un clic en la primera acción "Escuchar". Para hacer clic en la segunda acción "Ignorar" puede aprovechar nuestra función de contexto:
cliquear en "Ignorar" en el contexto de la tabla "acciones" en la fila que contiene "spk2" y columna "Acciones"
También puede trabajar con encabezados de varias líneas haciendo referencia a ellos con la palabra "encabezado":
ingresar "york1" en la primer tabla, en la segunda fila de encabezado y columna "Id"
testRigor admite tablas para todo tipo de operaciones, incluidas, entre otras: validaciones, clics, pasar el cursor, ingresar datos, arrastrar y solter, etc. Ejemplos:
verificar que la tabla "Acciones" en la fila "102" y la columna "Nombre" contiene "Spock"
verificar que la tabla "Acciones" en la fila "101" y la columna "Datos adicionales" tiene el valor "Parece una trampa"
ingresar "¡Parece una trampa!" en la tabla "acciones" en la fila "101" y en la columna "Datos adicionales"
cliquear "Abrir canal" en el contexto de la segunda tabla en la fila "103" y la columna "Acciones"
verificar que la segunda tabla en la fila que contiene "Nyota" y en la columna "Acciones" tiene el enlace "Abrir canal"
cliquear el primer botón dentro del contexto de la segunda tabla en la fila que contiene "Nyota" y en la columna "Acciones"
Agregación de valores de filas o columnas
Puede verificar determinadas agregaciones y comparaciones con los datos contenidos en toda una fila o columna
Orden de los valores
Para comprobar el orden de los valores contenidos en una fila o columna
verificar que la tabla "acciones" en la columna "Nombre" tiene los valores ordenados en orden ascendenteverificar que la tabla "acciones" en la columna "Nombre" tiene los valores ordenados en orden descendente
Número de valores (recuento)
Para comprobar el recuento de valores de una fila o columna
verificar que en la tabla "acciones" en la columna "Nombre", el recuento de valores sea mayor "2"
verificar que en la tabla "acciones" en la columna "Nombre", el recuento de valores sea inferior a "2"
verificar que en la tabla "acciones" en la columna "Nombre", el recuento de valores sea igual a "2"
Suma de valores
Para comprobar la suma de valores de una fila o columna
verificar que en la tabla "acciones" en la columna "#", la suma de los valores sea mayor que "100"
verificar que en la tabla "acciones" en la columna "#", la suma de los valores sea menor que "500"
verificar que en la tabla "acciones" en la columna "#", la suma de los valores sea igual a "306"
Media de valores
Para comprobar la media de los valores de una fila o columna
verificar que en la tabla "acciones" en la columna "#", el promedio de los valores sea mayor que "100"
verificar que en la tabla "acciones" en la columna "#", el promedio de los valores sea inferior a "300"
verificar que en la tabla "acciones" en la columna "#", el promedio de los valores sea igual a "155"
Validación de descargas de archivos XLS, XLSX y CSV
También puede utilizar comandos relacionados con tablas para archivos XLS, XLSX y CSV descargados.cliquear botón "Descargar ejemplo de archivo xlsx"
verificar si el archivo "file_example_XLSX_50.xlsx" fue descargado
verificar si en el archivo "file_example_XLSX_50.xlsx" en la columna "Id", el recuento de valores es mayor que "2"
Ejecución condicional
testRigor admite la ejecución condicional de comandos y reglas.
Comando condicional en línea
Puede ejecutar un comando solo si se cumple una condición, de esta manera:
cliquear "element" si la pagina contiene "bla"
ingresar "macbook" en "búsqueda" si "Buscar en" tiene el valor "bla"
En algunos casos, ciertos elementos pueden aparecer aleatoriamente en la pantalla. Para estos casos, existe la cláusula
si existe. Por ejemplo:cliquear "elemento" si existe
ingresar "bla" en "elemento" si existe
Los comandos anteriores no fallarán si no se encuentra el elemento y se omitirán silenciosamente.
Regla condicional en línea
Puede ejecutar una regla solo si se cumple una condición, de esta forma:
Mi Regla si la pagina contiene "bla"
Comprar Producto si "Buscar en" tiene el valor "Productos"
Bloques condicionales
Además de los condicionales en línea, que proporcionan una forma rápida de ejecutar un comando o una regla según el resultado de una validación, también proporcionamos bloques condicionales para permitirle probar múltiples condiciones con múltiples comandos y/o reglas.
Puede ejecutar varios comandos con una sola condición. Por ejemplo:
si la página contiene "bla" entonces
cliquear "elemento"
esperar por 10 seg
ingresar "algún texto" en "algún otro elemento"
fin
Además, si añade una cláusula
sino puede ejecutar otros comandos cuando no se cumpla la condición. Por ejemplo:si la página contiene "bla" entonces
cliquear "elemento"
esperar por 10 seg
sino
ingresar "algún texto" en "buscar"
esperar por 10 seg
fin
Pruebe tantas condiciones como desee utilizando la cláusula
sino si. Por ejemplo:si la pagina contiene "bla" entonces
cliquear "elemento"
esperar por 10 seg
sino si la pagina contiene "búsqueda" entonces
ingresar "algún texto" en "búsqueda"
esperar por 10 seg
sino si la página contiene "foo" entonces
ingresar "foo bar" en "elemento"
esperar por 10 seg
cliquear "algún botón"
sino
esperar por 10 seg
cerrar sesión
fin
También puede realizar varias validaciones en la misma instrucción SI utilizando las palabras clave "y" y "o" (lógica booleana), y agruparlas con paréntesis si es necesario:
si la página contiene "foo" y la página contiene "bar" entonces
cliquear "elemento"
fin
si la página contiene "foo" o la página contiene "bar" entonces
cliquear "elemento"
fin
si la página contiene "foo" y (la página contiene "bar" o la página contiene "hello") entonces
cliquear "elemento"
fin
Además de comandos, puede ejecutar reglas dentro de los bloques condicionales. Por ejemplo:
si la página contiene "bla" entonces
buscar algunas palabras
abrir el menú principal
borrar todo
fin
Los bloques condicionales son muy flexibles porque pueden mezclar comandos y reglas en cada condición. Por ejemplo:
si la página contiene "Bienvenidos" entonces
aceptar todas las cookies
esperar por 20 seg
abrir el menú principal
sino si la página contiene "Buscar" entonces
cliquear "Buscar"
ingresar "TV grande"
comprar el primer artículo de la lista
sino
iniciar sesión
fin
NOTA: Los bloques condicionales no se pueden anidar; le sugerimos usar reglas para anidar condiciones complejas.
Fallar la prueba a propósito
Existe una forma de fallar la prueba a voluntad como en el siguiente ejemplo:
fallar
fallar con "error"
Pruebas API
testRigor soporta llamadas a APIs, obteniendo valores y guardando el resultado como un valor almacenado:
llamar api <TIPO> "<URL_API>" con encabezados "a:a" y "b:b" y cuerpo "body" y obtener "JsonPath" y guardarlo como "nombreDeVariable"
Por ejemplo:
llamar api post "https://tr-playground-api.onrender.com/echo" con encabezados "Content-Type:application/json" y "Accept:application/json" y cuerpo "{\"nombre\":\"Jorge\",\"salario\":\"123\",\"edad\":\"32\"}" y obtener "$.received.nombre" y guardarlo como "nombreCreado" y luego validar que el código http es 200
En el ejemplo anterior, testRigor validaría que el código HTTP de retorno es 200. Los parámetros
"JsonPath" y "nombreDeVariable" son opcionales. Sin embargo, si "JsonPath" está presente, "nombreDeVariable" será obligatorio. He aquí un ejemplo más,llamar api "api" y guardarlo como "nombreDeVariable"
JsonPath es la forma de referirse a partes de JSON y se describe con ejemplos aquí. Si "JsonPath" no está definido en la acción, el resultado completo de la petición se almacenará en "nombreDeVariable".
testRigor soporta todas las acciones HTTP para la llamada <TIPO>:
- get - ejemplo
- post - ejemplo
- put - ejemplo
- patch - ejemplo
- head - ejemplo
- delete - ejemplo
- options - ejemplo
- trace - ejemplo
testRigor soporta múltiples cabeceras separadas por "y", por ejemplo:
con encabezados "a:a" y "b:b"Puede pasar JSON en el cuerpo de un POST, con comillas dobles escapadas así:
\". Puede usar herramientas para escapar automáticamente. Por ejemplo:y cuerpo "{\"name\":\"James\",\"salary\":\"123\",\"age\":\"32\"}"Puede utilizar parámetros y cadenas multilínea para construir una llamada:
llamar api post desde cadena con parámetros "${homePrefix}/api/v1/create" con encabezados "Content-Type:application/json" y "Accept:application/json" y cuerpo texto comenzando desde la siguiente línea y terminando con [END]
{
"param": "value",
"param2": "value2"
}
[END] y obtener "$.data.name" y guardarlo como "nombreCreado"
Y puede pasar parámetros:
llamar api post desde cadena con parámetros "${homePrefix}/api/v1/create" con encabezados "Content-Type:application/json" y "Accept:application/json" y cuerpo desde cadena con parámetros texto comenzando desde la siguiente línea y terminando con [END]
{
"param": "value",
"param2": "${dynamicValue}"
}
[END] y obtener "$.data.name" y guardarlo como "nombreCreado"
Una vez ejecutada la llamada a la API, si el resultado se almacenó en un valor guardado, luego podría validarse así:
verificar que el valor guardado "nombreCreado" en sí mismo contiene "James"
Validación de llamadas a la API realizadas por el navegador (solo Chrome/Edge)
Los navegadores web realizan varias operaciones para renderizar una página o aplicación: múltiples solicitudes para HTML, hojas de estilo, scripts, etc., y también comunicación con APIs. testRigor permite verificar el correcto funcionamiento de esas solicitudes directamente desde los pasos del caso de prueba mediante un comando de validación.
El comando acepta varias partes para filtrar una solicitud concreta o validar más:
- URL de la solicitud: se buscarán solicitudes a una URL objetivo que empiece con su entrada
- Método de la solicitud: GET, POST, PUT, PATCH, DELETE, etc.
- Encabezados de la solicitud: filtra solicitudes cuyos encabezados contienen su entrada
- Cuerpo de la solicitud: filtra solicitudes que envían datos que contienen su entrada
- Código de estado de la respuesta: localiza una respuesta recibida con ese código
- Encabezados de la respuesta: localiza una respuesta con encabezados que contienen su entrada
testRigor aplicará los filtros en este orden (como un pipeline):
- Coincidencia de URL de la solicitud
- Coincidencia de método de la solicitud
- Coincidencia de encabezados de la solicitud
- Coincidencia de cuerpo de la solicitud
- Código de estado de la respuesta
- Encabezados de la respuesta
Una validación con todos los parámetros luciría así:
verificar que se realizó la llamada a la API POST desde valor guardado "miURL" con encabezados que contienen "algun-valor-encabezado" y "\"Content-Type\":\"application/json\"" y texto comenzando desde la siguiente línea y terminando con [END]
"Referer":"https://example.com"[END] y que el cuerpo de la solicitud contiene "algún dato" y que el código de respuesta fue "200" y los encabezados de respuesta contienen "resp-valor-encabezado"
También se pueden hacer validaciones más simples:
verificar que el navegador llamó a la api "https://example.com" y que el código de respuesta fue "200"
verificar que se realizó la llamada a la api a la url "https://example.com" con encabezados que contienen desde valor guardado "miEncabezado"
verificar que se realizó la llamada a la api con encabezados de respuesta "algun-valor" y desde valor guardado "miVariableEncabezado"
Tipos de cuerpo de solicitud para filtrar
testRigor permite especificar múltiples parámetros de cuerpo para filtrar solicitudes. Cada parámetro puede ser TEXTO, JSON o JSON PATH.
Parámetro de cuerpo de TEXTO
Texto es el tipo por defecto; si no se especifica, se usará TEXTO.
verificar que se realizó la llamada a la api POST "https://example.com" con el cuerpo que contiene "algun_dato1" y texto "algun_dato2"
Parámetro de cuerpo JSON
Para usar JSON, indique la palabra json antes del valor. El valor debe componerse de clave y valor separados por dos puntos (:).
verificar que se realizó la llamada a la api POST "https://example.com" con el cuerpo que contiene json "key1 : value1" y json "\"key2\":\"value2\""
Parámetro de cuerpo JSON PATH
Para usar JSON PATH, indique json path antes del valor, que debe ser una ruta válida.
verificar que se realizó la llamada a la api POST "https://example.com" con el cuerpo que contiene json path "$.some_path[?(@.value < 10)]"
Se puede usar más de un tipo de parámetro en el mismo paso.
Imitar llamadas a la API
testRigor soporta simular datos de respuesta (encabezados, cuerpo y/o código de estado HTTP) para llamadas a APIs realizadas dentro de su aplicación.
imitar llamada api <TIPO> "<URL_API>" retornando cuerpo "<CUERPO_MOCK>"
Por ejemplo:
imitar llamada api get "https://dummy.restapiexample.com/api/v1/employees" con encabezados "a:a" retornando cuerpo "Esta es una respuesta simulada" con código de estado http 200
En el ejemplo anterior, cualquier llamada GET al endpoint "https://dummy.restapiexample.com/api/v1/employees" con los encabezados "a:a" responderá con el mock de testRigor, con estado 200.
Casos útiles:
- Evitar costos de APIs de terceros simulando respuestas en lugar de llamar al servicio real.
- Probar su aplicación de forma aislada si los servidores están inestables o caídos.
- Probar escenarios específicos, por ejemplo, cuando el servidor devuelve error.
Carga de archivos mediante el navegador
La carga de archivos es compatible de forma predeterminada. Úsela así:
ingresar variable guardada "archivoDeImagen" en "campoDeArchivo"
ingresar "<archivoURL>" en "campoDeArchivo"
La forma más común de subir archivos es sin especificar el nombre de la entrada:
ingresar la variable almacenada "miArchivo" en el tipo de entrada archivo
También puede especificar el campo
tipo de archivo de entrada por indexación o ubicación relativa:ingresar la variable almacenada "miArchivo" en el 3.er tipo de entrada archivo
ingresar la variable almacenada "miArchivo" en el tipo de entrada archivo en el contexto de "Seleccionar archivo"
Nota: En la mayoría de los casos, hacer clic en el botón que abre el directorio de archivos no es necesario para cargar el archivo y debe omitirse. Si esto no funciona, puede intentar hacer clic en el botón, ingresar el archivo y, a continuación, cerrar el directorio con un comando de anexión mediante
usando solo OCR solo con el ratón.Cuando "campoDeArchivo" es un elemento de entrada de archivos (es decir,
input type="file" ...), puede cargar archivos de hasta 10 MB en el almacenamiento de testRigor en la sección "Test Data" y, a continuación, utilizarlos por su nombre como valor almacenado. También puede utilizar su propia URL. Si elige cargar desde su propia URL, el enlace debe ser descargable. Dado que los archivos deben cargarse siempre durante las ejecuciones desde el entorno testRigor (tanto si se almacenan en Test Data como si se llaman mediante URL) y no pueden cargarse directamente desde el almacenamiento local de los usuarios, solo en casos muy excepcionales es necesario incluir comandos en el script para hacer clic en el botón que solicita el directorio de archivos o el buscador de archivos.Archivos múltiples
La carga de varios archivos puede hacerse de la siguiente manera:
ingresar desde cadena con parámetros texto comenzando desde la siguiente línea y terminando con [END]
${imagen}
${textFile}
<FILE_URL>
[END] en entrada "miEntradaDeArchivo"
Trabajar con carpetas
Si el elemento de entrada tiene un atributo
webkitdirectory, por ejemplo - <input type="file" webkitdirectory ... este elemento está esperando una carpeta. Si intenta subir un archivo, lo pondremos en una carpeta temporal e ingresaremos ese valor. Sin embargo, si quiere subir una carpeta real, puede comprimir la carpeta y usarla como entrada. En tal caso, descomprimiremos el archivo, conservando la estructura de directorios e ingresaremos la ruta raíz. Esto es similar a la acción de arrastrar carpeta.Nota: Esto NO funciona en modo sin interfaz gráfica. Tampoco funciona con Internet Explorer
Archivos de plantilla
También puede especificar archivos que contengan valores separados por comas (CSV) y parametrizarlos con variables (cualquier valor almacenado) de la forma
${nowDateIso}.El archivo debe estar en formato CSV o TXT y contener los valores y variables del formulario:
algún valor, ${variable1}, otro valor
${variable2}, valor fijo, ${variable3}
Para permitir la creación de plantillas es necesario utilizar la palabra "plantilla" de la siguiente manera
ingresar la variable almacenada en la plantilla "keyName" en la entrada de archivo "campoDeArchivo"
ingresar la plantilla "<FILE_URL>" en la entrada de archivo "campoDeArchivo"
Carga nativa mediante el cuadro de diálogo de archivos
Para aplicaciones que usan los diálogos de selección de archivos nativos del sistema operativo (como aplicaciones de escritorio o aplicaciones web de escritorio), puede subir archivos usando:
seleccionar archivo desde el archivo guardado "miArchivo" usando el diálogo de selección de archivos
Donde
miArchivo debe ser un valor almacenado de tipo archivo, que puede ser:- Un archivo cargado en Test Data
- Un valor almacenado a partir de un paso previo de descarga de archivo
El archivo será descargado en el entorno de prueba y seleccionado automáticamente en el diálogo nativo.
Nota: El diálogo de selección de archivo debe estar abierto antes de ejecutar este comando.
Nota: Esto NO funciona en modo sin interfaz visual ni cuando la configuración de “How to take screenshots” está establecida para usar Browser.
Llamadas telefónicas
testRigor admite realizar una llamada a través de Twilio. Hay una sección en la configuración de la aplicación en Integrations para establecer los parámetros de Twilio; es necesario para realizar llamadas.
Después de la integración se puede añadir pasos personalizados como estos:
llamar al "+15344297154" y verificar que se atendió
llamar al "+15344297154" y verificar que se ha respondido
llamar a +15344297154
llamar "+15344297154" y verificar que se haya completado
llamar "+15344297154" desde "+15551234567" y verificar que está sonando
verificar que la llamada telefónica desde "+15344297154" está sonando
verificar que la llamada telefónica desde "+15344297154" se ha respondido
El número de origen es opcional y puede ser necesario asignarlo antes de utilizarlo. Los números de origen y destino pueden ser valores almacenados o cadenas parametrizadas:
llamar desde variable almacenada "númeroAsignado" a variable almacenada "númeroTelefónicoRespuesta"
Mensajes SMS (Texto telefónico)
Puede enviar mensajes gracias a la integración con Twilio . Hay una sección en la configuración de la aplicación en Integraciones para establecer los parámetros de Twilio ; es necesario para enviar mensajes.
A continuación, puede añadir pasos personalizados como estos:
sms a "+15344297154" con cuerpo "este es el contenido" y verificar que fue enviado
enviar sms a "+15344297154" con contenido "este es el contenido"
enviar mensaje a "+15344297154" con texto "este es el contenido" y verificar que fue entregado
enviar mensaje de +15551234567 a "+15344297154" con texto "este es el contenido" y verificar que fue fallido el mensaje de +15551234567 a "+15344297154" con cuerpo "este es el contenido" y verificar que no fue entregado
El número desde el que se envía el mensaje es opcional y puede ser necesario asignarlo antes de utilizarlo.
También puede validar los mensajes SMS y validar y almacenar su contenido:
verificar que sms desde "+12345678901" a "+12345678902" contiene "Código" y coincide con la expresión regular "Code\:\d\d\d\d" y guardarlo como "sms"
Puede aplicar adicionalmente el comando
extraer valor para obtener solo el código:verificar que sms a "+12345678902" coincide con la expresión regular "Code\:\d\d\d\d" y guardarlo como "sms"
Extraer el valor mediante la expresión regular "(?<=Code\:)[0-9]{4}" desde "sms" y guardarlo como "códigoDeConfirmación"
El número de origen, el número de destino y el cuerpo del mensaje pueden extraerse de valores almacenados o cadenas parametrizadas. Además, el cuerpo del mensaje puede ser una cadena multilínea:
enviar sms desde variable almacenada "númeroAsignado" a variable almacenada"númeroTelefónicoRespuesta" con contenido desde cadena con parámetros texto comenzando desde la siguiente línea y terminando con [fin]
${answerCode} b
<fin>
Puede solicitar un número de teléfono temporal a Twilio. Hay una sección en la configuración de la aplicación en Integrations para configurar Twilio; es necesario para realizar llamadas.
Una vez configurada la integración, puede añadir pasos personalizados como estos:
asignar un número temporal y guardarlo como "númeroNuevo"
Este paso personalizado solicitará un número nuevo de teléfono (se aplicarán los cargos de Twilio) y lo guardará en una variable "númeroNuevo", que puede utilizar para comprobar si hay llamadas o mensajes entrantes. Cuando finalice la ejecución de la prueba, este número se liberará automáticamente.
A continuación hay un ejemplo de prueba de un inicio de sesión 2FA con SMS:
cliquear "Iniciar sesión"
ingresar "Jacob" en "Usuario"
ingresar "contraseñaSegura" en "Contraseña"
cliquear "Verificarme"
verificar que sms a "+12345678902" fue entregado y coincide con la expresión regular "Code\:\d\d\d\d" y guardarlo como "sms"
extraer valor de regex "(?<=Code\:)[0-9]{4}" de "sms" y guardarlo como "códigoDeConfirmación"
ingresar variable guardada "códigoDeConfirmación" en "código"
cliquear "Continuar al inicio"
verificar que la página contiene el texto " ¡Bienvenido, Jacob!"
Soporte de inicio de sesión
testRigor admite el inicio de sesión con un comando único, como por ejemplo:
iniciar sesión
Esta acción identifica y realiza los pasos necesarios para iniciar sesión en la aplicación automáticamente. Después de ejecutarse con éxito la primera vez, crea una regla llamada Autogenerated Login para la aplicación que contiene los pasos identificados, que puede anular creando una regla reutilizable con el mismo nombre.
Por ejemplo, para una aplicación con un simple inicio de sesión por correo electrónico y contraseña, los pasos ejecutados e incluidos en la regla serían:
ingresar variable guardada "username" en "email"
ingresar variable guardada "password" en "password"
cliquear "Log In"
Tenga en cuenta que el comando de inicio de sesión se basa en tener credenciales de inicio de sesión configuradas para su aplicación en testRigor.
Pruebas de correo electrónico
testRigor permite realizar pruebas tanto con el envío de correos electrónicos como con su recepción y validación:
enviar email a "usuario@testrigor-mail.com" con asunto "Mensaje de prueba" y cuerpo "Hola, esta es una prueba, este es solo un mensaje de prueba."
esperar por 20 seg
verificar si el email a "usuario@testrigor-mail.com" fue recibido
El envío de correos electrónicos también permite enviar archivos adjuntos haciendo referencia a una URL de un archivo que desee adjuntar:
enviar email desde "sender@testrigor-mail.com" a "usuario@testrigor-mail.com" con asunto "Mensaje de prueba" cuerpo "Hola, esta es una prueba, este es solo un mensaje de prueba." y con archivo adjunto variable guardada "archivoTest"
enviar email desde "sender@testrigor-mail.com" a "usuario@testrigor-mail.com" con asunto "Mensaje de prueba" cuerpo "Hola, esta es una prueba, este es solo un mensaje de prueba." y con archivo adjunto "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTc9APxkj0xClmrU3PpMZglHQkx446nQPG6lA&s"
Notas:
- "Para" y "de" pueden utilizarse al mismo tiempo. Si no se especifica, la dirección "de" será por defecto "noreply@testrigor-mail.com".
- Como archivo adjunto opcional puede utilizarse un archivo guardado definido en "Test Data". Un archivo adjunto también puede ser un enlace a un archivo disponible en línea sin nombre de usuario/contraseña.
- Las direcciones "de" y "a" pueden rellenarse a partir de valores almacenados (por ejemplo, "a valor guardado "emailNuevo" y/o "de valor guardado "emailNuevo").
La verificación del correo electrónico se abrirá automáticamente y se mostrará como una página HTML en una ventana del navegador de escritorio:
verificar si el email a "usuario-aleatorio@testrigor-mail.com" desde "usuario@testrigor-mail.com" fue recibido
verificar que esos dos emails a "user@customer.com" y "Confirmado" en asunto fueron entregados
verificar que uno o más emails a "user@customer.com" y "Confirmado" en asunto fueron entregados
verificar que email a la variable guardada "emailNuevo" fue recibida
verificar que email a la variable guardada "emailNuevo" desde "admin@customer.com" y "Confirmado" en asunto fue recibido
verificar que email a la variable guardada "emailNuevo" y "<expresion regular>" en asunto fue recibido
Si necesita mostrar el mensaje en el navegador del mismo dispositivo móvil en el que pruebe su aplicación o sitio web (si se prueba en un dispositivo móvil), por ejemplo, al validar un caso de prueba de registro, o simplemente desee ver cómo se ve en una pantalla pequeña, puede mencionarlo en la acción de la siguiente manera:
verificar que email a "<random-user>@testrigor-mail.com" y "Confirmado" en asunto fue recibido y mostrar en dispositivo
En algunos casos puede que necesite comprobar que el correo electrónico no se ha enviado:
verificar que email a "<random-user>@testrigor-mail.com" desde "user@customer.com" no fue entregado
Notas:
-
Si no se especifica el recuento de correos electrónicos, asumimos que solo se espera un mensaje. Múltiples correos electrónicos son tratados como un error; así que para evitar recibir el mensaje de error, especifique el número de correos electrónicos que deben ser esperados o simplemente informe al sistema que más de uno puede ser enviado como se hace a continuación:
verificar que uno o más emails a variable guardada "<random-user>@testrigor-mail.com" fueron recibidos -
El usuario debe enviar un mensaje a la siguiente dirección:
<usuario-aleatorio>@testrigor-mail.com, donde<usuario-aleatorio>puede ser cualquier dirección de correo electrónico válida. Para evitar conflictos, se recomienda que el nombre de usuario contenga el nombre del cliente y alguna parte aleatoria, por ejemplo hfynerifj@testrigor-mail.com. Esto es importante cuando se ejecutan pruebas de correo electrónico en varios navegadores y/o en varias máquinas al mismo tiempo. En este caso, es responsabilidad del usuario asegurarse de que no reciba mensajes destinados a otro caso de prueba. -
Se espera que el usuario añada un tiempo de espera antes de validar el correo electrónico. Esta acción de chequeo validará la entrega, pero no esperará a que llegue el mensaje. Por ejemplo:
esperar por 2 min - Una vez que la acción se ha ejecutado correctamente, el mensaje se elimina del buzón y se muestra en una pestaña nueva. Varios correos electrónicos se marcarán como error, pero cada uno se mostrará en una pestaña distinta. Puede cambiar entre pestañas usando
cambiar a pestaña "1”,cambiar a pestaña "2", etc. Tenga en cuenta que el contenido antiguo permanecerá en la pestaña anterior al primer mensaje de correo electrónico renderizado. En la mayoría de los casos es la pestaña "1", a menos que haya abierto más pestañas. -
Cada pestaña de correo electrónico se renderiza como una página html, por lo que puede utilizar cualquier acción que utilizaría en una página html. Hay algunos identificadores de elementos útiles que le ayudarán a obtener partes específicas de un correo electrónico:
- "message-froms" una lista de direcciones "de" (normalmente una dirección)
- "message-subject" asunto del mensaje
- "message-date" fecha y hora de envío del mensaje en la zona horaria del Pacífico.
- "message-tos" lista de direcciones “a”
- "message-ccs" lista de direcciones "CC”
- "message-bccs" lista de direcciones "BCC”
- "message-reply-to" la dirección "responder a”
- "message-text" el texto del mensaje
- "message-attachments" una lista de archivos adjuntos (solo los nombres de los archivos)
- Si quiere realizar una validación de nuevo, tiene que volver a enviar el correo electrónico. Sus acciones personalizadas no pueden contener varias acciones de "validar" para el mismo mensaje.
-
Los destinatarios múltiples pueden separarse con "y":
enviar email a variable guardada "emailNuevo" y a variable guardada "emailNuevo2" con asunto "Prueba" y cuerpo "Hola" - Al validar los correos electrónicos solo tenemos en cuenta los enviados después de que se haya iniciado un caso de prueba específico. Esto se hace para evitar conflictos cuando un correo electrónico no se ha validado en una ejecución anterior no finalizada.
Ejemplo de una prueba para un flujo de registro:
cliquear "Registrarse"
generar email único, luego ingresar en "Email" y guardarlo como "emailNuevo"
generar un nombre único, luego ingresarlo en “Nombre” y guardarlo como “nombreGenerado”
ingresar "contraseñaSuperSegura" en "Contraseña"
cliquear "Enviar"
verificar que el email a la variable guardada "emailNuevo" fue entregado
cliquear "Confirmar email"
verificar que la página contiene "El Email fue confirmado"
verificar que la página contiene la expresion "Hola, ${generatedName}"
Cookies del navegador, almacenamiento local, almacenamiento de sesión, agente de usuario
El usuario puede establecer/obtener/borrar las cookies del navegador de esta manera:
establecer cookie "valor de cookie" como "nombreDeCookie"
establecer cookie desde el valor guardado "nombreDeVariable" como "nombreDeCookie"
obtener cookie "nombreDeCookie" y guardar como "nombreDeVariable"
limpiar cookie
establecer/obtener/borrar elementos almacenamiento local y almacenamiento de sesión del navegador de la siguiente manera:
establecer elemento "datoDeElemento" en sesión almacenada como "nombreDeElemento"
obtener elemento "nombreDeEelemento" desde sesión almacenada y guardar como "nombreDeVariable"
limpiar sesión almacenada
establecer elemento "datoDeElemento" en almacenamiento local como "nombreDeElemento"
obtener elemento "nombreDeElemento" desde almacenamiento local y guardar como "nombreDeVariable"
limpiar almacenamiento local
y establecer/desestablecer un valor de agente de usuario personalizado como este:
Establecer el agente de usuario en "Mi agente de usuario"
Desactivar agente de usuario
Compatibilidad de comentarios
testRigor admite comentarios de una línea separados por
// de esta forma:cliquear "miBotónCríptico" // realmente cliquear "agregar al carrito"
Soporte para certificados de cliente TLS
testRigor tiene un soporte limitado para la autenticación de clientes con certificados TLS.
Esta función solo está disponible para Google Chrome en Windows.
En primer lugar, debe cargar los certificados en Test Data. Al igual que cualquier otra variable, pueden ser heredados de la Test Suite padre.
Después, puede seleccionar el certificado predeterminado en advanced settings y el navegador se iniciará con este certificado.
Si necesita trabajar con varios certificados simultáneamente, puede abrir otra ventana del navegador con un certificado diferente.
Para ello, utilice el siguiente comando:
// El certificado se carga en la variable CERT_USER_ADMIN
Iniciar el navegador "context-admin" con certificado desde la variable almacenada "CERT_USER_ADMIN" y cambiar
En este caso, es necesario que los certificados tengan diferentes Subject Common Names.
Pruebas de audio
Puede probar audios grabándolos y comparándolos después con otra grabación de la misma prueba o con un archivo externo. Actualmente, las pruebas de audio solo están disponibles para dispositivos Linux/Ubuntu.
Grabación
Tiene la opción de grabar todo el audio que se está reproduciendo en una pestaña. El siguiente comando es un ejemplo:
grabar audio durante 10 segundos después de hacer clic en "audioTrigger" y guardar como "miGrabacion"
También puede grabar el audio de una etiqueta de audio específica como en el ejemplo de abajo:
grabar audio desde "miEtiquetaDeAudio" durante 20 segundos después de hacer clic en "audioTrigger" y guardar como "miGrabacionEspecifica"
Comparaciones
Después de tener una grabación guardada como variable, puede compararla con otra grabación. Por ejemplo:
verificar que audio de "miGrabacion" es "70 %" similar a "miGrabacionEspecifica"
También puede compararla con un archivo externo:
verificar que audio de "miGrabacion" es "85 %" similar a "https://some-page.com/path-to-file"
La extensión compatible para archivos externos es .wav
Al comparar podemos validar de forma positiva o negativa utilizando similar o diferente, por ejemplo:
verificar que audio de "miGrabacion" es "99 %" similar a "miGrabacionEspecífica"
o
verificar que audio de "miGrabacion" es "1 %" diferente a "miGrabacionEspecifica"
Reproducción
Si necesita reproducir audio como si fuera alguien hablando a través de un micrófono puede cargar el archivo .wav que se va a reproducir desde un archivo remoto.
Para las pruebas que se ejecuten en Linux, se utilizan dispositivos virtuales (micrófono/altavoces), de lo contrario adjuntamos a las
etiquetas < audio > existentes
Puede hacer referencia a un archivo remoto para descargar
reproducir audio "https://some-page.com/path-to-file"
O una referencia de Test data
Reproducir audio "test-data-ref"
Si se necesita más control sobre cuándo reproducir el audio y cuándo detenerlo, se puede utilizar
Reproducir audio "sonidoPorReproducirRef" después cliquear "empezarGrabacion", luego cliquear "pararGrabacion"
Validaciones
Si necesita validar que se produce audio (por ejemplo, que un video se reproduce correctamente con sonido), puede utilizar los siguientes comandos:
verificar que el audio se está reproduciendo
También está disponible la prueba negativa:
verificar que el audio no se está reproduciendo
En ambos casos, se grabará una muestra de audio de 10 segundos, que estará disponible en los artefactos para su descarga para la validación manual si es necesario.
Soporte de consulta de bases de datos
Puede conectarse a determinadas bases de datos externas a través de un controlador JBDC y ejecutar comandos directamente desde sus pruebas.
Gestión de conexiones múltiples
Es posible configurar más de una conexión. En este caso, puede indicar la conexión a utilizar por su nombre:
Ejecutar la consulta SQL "select top 1 UserID, LastName, FirstName from Users;" usando la conexion "connectionName"
Ejecutar la consulta no-SQL "" usando la conexión "anotherConnectionName"
Nota: Si no se indica el nombre de la conexión, la aplicación utilizará la primera que haya sido configurada.
Anular la configuración
Puede actualizar la configuración de la conexión en tiempo de ejecución utilizando las siguientes variables: "connectionName:usernameJDBC", "connectionName:passwordJDBC" y "connectionName:connStringJDBC":
guardar variable "usuario" como "connectionName:nombreusuarioJDBC".
guardar variable "clave12345" como "connectionName:claveJDBC
guardar variable "jdbc:mysql:host:port" como "connectionName:connStringJDBC"
Ejecutar la consulta SQL "select top 1 UserID, LastName, FirstName from Users;" usando conexión "connectionName"
Soporte de bases de datos SQL
Disponemos de soporte de controladores para las bases de datos más populares como MySQL, PostgreSQL, SQL Server, Snowflake, y Grid Gain.
Puede utilizar comandos SQL en los pasos de prueba para recuperar, insertar, actualizar y eliminar filas.
Seleccionar
El siguiente ejemplo obtendrá la primera fila y guardará cada par de columna-nombre/valor en un valor almacenado con el nombre de la columna como clave:
Ejecutar la consulta SQL "select top 1 UserID, LastName, FirstName from Users;"
Luego puede utilizar los valores almacenados de la siguiente manera:
ingresar variable almacenada "primerNombre" en "Primer nombre"
verificar la variable almacenada "apellido" en si mismo contiene "Doe"
Insertar
Ejecuta la sentencia insert definida, por ejemplo:
Ejecutar la consulta SQL "insert into Users(UserID, FirstName, LastName) values (3, 'Jon', 'Doe');"
Archivos CSV
Puede ejecutar consultas SQL en archivos CSV.
cliquear "descargar" a la derecha de "Pokemons.csv"
verificar que el archivo "Pokemons.csv" fue descargado
Ejecutar la consulta SQL "select Type from Pokemons;" usando el archivo "Pokemons.csv"
Soporte de Bases de Datos No-SQL
Tenemos soporte para bases de datos MongoDB.
Puede utilizar comandos MongoDB en los pasos de prueba para recuperar, insertar, actualizar y eliminar documentos.
Buscar
El siguiente ejemplo obtendrá el primer documento y guardará cada par de propiedad-nombre/valor en un valor almacenado con el nombre de la propiedad como clave:
Ejecutar la consulta no-SQL "{\"find\": \"Users\", \"limit\": 1, \"projection\": {\"userId\": 1, \"firstName\": 1, \"lastName\": 1}}"
A continuación, puede utilizar los valores almacenados de la siguiente manera:
ingresar variable almacenada "primerNombre" en "Primer nombre"
verificar la variable almacenada "apellido" en sí misma contiene "Doe"
Insertar
Ejecuta el comando de inserción definido, por ejemplo:
Ejecutar la consulta no-SQL "{\"collection\": \"Users\", \"documents\": [{\"userId\": 3, \"firstName\": \"Jon\", \"lastName\": \"Doe\"}]}"
Pruebas de extensiones de Chrome
Puede utilizar su extensión para probarla o probar la integración con sus/otras páginas.
Se necesita un archivo CRX de la extensión para esta función. Cárguelo en Settings -> Integrations -> Chrome Extensions, y asígnele un nombre ya que será necesario para su uso en los comandos para abrir la extensión.
Para abrir la extensión en una nueva pestaña, utilice el siguiente comando:
abrir extensión "miExtension"
Para abrir la extensión en una ventana emergente o simplemente para habilitar la extensión, puede utilizar este comando:
activar extensión "miExtensión"
Resolución de captcha (no incluida por defecto)
Puede resolver imagen a texto y Google Re-Captcha V2 y V3 directamente desde los pasos de su caso de prueba. Tenga en cuenta que se trata de una función adicional y tendrá que ponerse en contacto con nuestro equipo de ventas para incluirla en su plan.
Captcha de tipo imagen a texto
Este tipo de captcha es muy común y consiste principalmente en una imagen que muestra una secuencia de letras y números distorsionados. Para resolverlo, solo tiene que indicar en su test el tipo de captcha como imagen y señalar el elemento que contiene el captcha o imagen captcha. El resultado de la operación se guardará como una variable llamada "captchaTest" y podrá ingresarlo en la entrada correspondiente.
resolver captcha de tipo imagen desde "elemento captcha"
A continuación, puede utilizar el texto extraído de la siguiente manera:
ingresar valor guardado "captchaText" en "Ingrese el texto de captcha aquí..."
cliquear "Validar"
Tipo de captcha Google Re-Captcha
Google Re-Captcha viene en muchos sabores y suele estar en la página como un script personalizado que muestra (o no dependiendo de la configuración) un botón para verificar si el usuario es un humano. En este caso no es necesario especificar un elemento ya que vamos a detectar el captcha en la página y resolverlo. Si la configuración del captcha tiene un callback, incluso lo llamaremos por usted. Además, vamos a almacenar el token resultante en una variable llamada "captchaToken" para que pueda ingresarlo en la entrada correspondiente o usarlo dentro de un fragmento de javascript para validarlo si no está definido dicho callback.
resolver captcha de tipo recaptcha
Entonces, si no se detectó un callback en la configuración del captcha, puede usar el token extraído de la siguiente manera:
ingresar valor almacenado "captchaToken" en "g-recaptcha-response"
cliquear "Validar"
Escanear código QR
testRigor soporta escanear códigos QR, obteniendo el valor y guardando el resultado como un valor almacenado.
Puede utilizar la función Escanear código QR para leer una imagen de código QR guardada como variable o para leer una imagen de código QR de la pantalla.
Escanear código QR desde una imagen almacenada
escanear el código QR desde el valor guardado "códigoQrGuardado" y guardar como "código"
En el comando anterior estamos leyendo la imagen del código QR almacenada como "códigoQrGuardado" y guardando el resultado en la variable "código".
Escanear código QR desde la pantalla
Puede especificar cualquier elemento de la pantalla para escanearlo como código QR.
escanear el valor del código QR desde "contenedor-de-código" a la derecha de "Código QR 2" y guardarlo como "código"
En el comando anterior estamos leyendo la imagen del código QR del elemento "contenedor-de-código" que está a la derecha de "Código QR 2" en la pantalla y guardando el resultado en la variable "código".
Temas avanzados de testRigor
testRigor le proporciona una interfaz completa para JavaScript con la capacidad de acceder a toda la potencia de testRigor a través de la interfaz.
Soporte JavaScript
testRigor permite utilizar JavaScript y referirse a los comandos de testRigor de esta manera:
guardar valor "hola" como "var1"
ejecutar JavaScript texto comenzando desde la siguiente línea y terminando con [END]
if (testRigor.hasStoredValue("var1")) {
testRigor.execute('enter stored value "var1" en "Mensaje"');
}
testRigor.execute('cliquear "Actualizar"');
testRigor.execute('verificar que la página contenga el texto del valor guardado "var1"');
[END]
El JavaScript soportado es totalmente compatible con ECMAScript 5.1.
Interfaz de testRigor
La interfaz de testRigor es la siguiente:
interface testRigor {
/**
* Verdadero si la variable ha sido asignada.
*/
boolean hasStoredValue(String storedValueName);
/**
* Obtiene el valor de la variable.
*/
String getStoredValue(String storedValueName);
/**
* Establece el valor de la variable.
*/
String putStoredValue(String storedValueName, String value);
/**
* Extrae el mapa completo de variable a valor.
*/
Map<String, String> getReadOnlyStoredValuesMap();
/**
* Obtiene el árbol de elementos de la pantalla actual.
*/
UiElement getNodeTree();
/**
* Ejecuta los comandos. Pueden ser múltiples comandos separados por líneas nuevas.
*/
boolean execute(String commands);
}
Estructura de pantalla/página
La interfaz UiElement es la siguiente:
interface UiElement {
String getElementName();
String getHtmlNodeName();
double getY();
double getX();
double getHeight();
double getWidth();
UiElement getParent();
String getText();
String getPath();
String getShortPath();
String getFullPath();
String getName();
String getLabel();
String getHint();
String getTitle();
String getClassName();
String getResourceId();
String getOcrText();
String getPlaceholder();
String getAlternative();
String getType();
String getValue();
String getAriaLabel();
String getRole();
boolean isVisible();
boolean isEnabled();
boolean isClickable();
boolean isChecked();
boolean hasProperty(String propertyName);
String getProperty(String propertyName);
}
Arriba, la mayoría de las propiedades provienen directamente de XML/HTML, excepto las calculadas:
- x
- y
- height
- width
- visible
- ocrText - solo disponible si el OCR está habilitado
- shortPath - versión corta de XPath que aprovecha los identificadores siempre que sea posible
- fullPath - XPath completo directo desde la raíz
- path - uno de los anteriores según la configuración
Tenga en cuenta que el id se almacena en el atributo
resourceId.Interacciones entre elementos
Las referencias a elementos se analizan con NLP basado en ML, pero pueden pensarse como la siguiente estructura en pseudo-EBNF simplificado:
comando [índice] [tipoDeElemento] ["que contiene"] ["valor almacenado" | "cadena parametrizada"] [referenciaDeElemento] ["en el contexto de", referenciaDeElemento]
Donde:
referenciaDeElemento = \"nombreDeElemento\", {"o", referenciaDeElemento} [referenciaDentroDeTabla]
Donde:
referenciaDentroDeTabla = "en" ["fila", referenciaDeElemento] ["columna", referenciaDeElemento]
Por ejemplo:
cliquear el primer botón "eliminar" o "quitar" en el contexto de la primera tabla "visible", en la fila que contiene el valor almacenado "idGenerado" y la columna "acciones"
O puede referirse a elementos directamente mediante selectores CSS y XPaths (OBSOLETO: SE ELIMINARÁ A FINALES DE 2025):
cliquear XPath "https://example.com/html/body/div[3]"
O:
cliquear selector CSS "a[target=_blank]"
Automatizar tablas de pruebas
Selección de una fila en una tabla
testRigor tiene una forma muy potente de tratar lo que para un usuario parece una tabla.
Puede referirse a elementos de la tabla especificando fila y columna. Para especificar una fila se dispone de un potente lenguaje tipo SQL. Por ejemplo, puede decir cosas como
cliquear "Eliminar" dentro de la tabla, en la fila que contiene "mi id único" y la columna "Acciones"
Aquí no especificamos la columna donde debe residir "mi id único", sino que indicamos que puede estar en cualquier columna de esa fila.
También puede construir expresiones de tipo SQL que contengan una o varias columnas con diferentes validaciones. Por ejemplo:
verificar que la tabla en la que "País" es igual a "Estados Unidos", "Ciudad" es igual a "San Petersburgo" y "Estado" es igual a "Florida", contiene "Próspero" en la columna "Estatus"
Aquí hemos utilizado 3 condiciones diferentes para identificar la fila conectada con el operador booleano Y. Se admiten los siguientes operadores booleanos:
- Y
- O
- NO
- Paréntesis ()
Y también se pueden utilizar paréntesis. El cálculo de la condición seguirá la lógica booleana estándar. La condición anterior también podría expresarse así:
verificar que la tabla con no ("País" no es igual a "Estados Unidos" o "Ciudad" no es igual a "San Petersburgo" o "Estado" no es igual a "Florida") contiene "Próspero" en la columna "Estatus"
Puede aprender más sobre cómo funcionan los operadores booleanos aquí.
Lo interesante de testRigor es que estas instrucciones funcionarán independientemente de cómo se muestre la tabla. Podría ser representada como una etiqueta HTML TABLE con TRs y TDs hoy y completamente basada en div mañana. No importa, su código seguirá funcionando de todos modos.
Por ejemplo, consideremos la siguiente tabla:
| # | Id | Nombre | Navío | Estatus | Acciones |
|---|---|---|---|---|---|
| 1 | york1 | Yorktown | Enterprise | Correcto | Llegar Cancelar |
| 2 | spk2 | Spock | Enterprise | Correcto | Escuchar Ignorar |
| 3 | nyo3 | Nyota | Enterprise | Correcto | Abrir canal Promocionar |
| 4 | spk2 | Spock | Kelvin | Correcto | Escuchar Ignorar |
| 5 | nyo3 | Nyota | Kelvin | Correcto | Abrir canal Promocionar |
En el ejemplo anterior, las filas no tienen identificadores únicos significativos. Solo tenemos números de fila que pueden generarse automáticamente para mostrar el índice de una fila. No podemos confiar en ellos de forma consistente porque cambiarán la próxima vez que se actualice la página. ¿Cómo vamos a hacer un botón con Spock y Kelvin? De la siguiente manera:
cliquear el primer botón en el contexto de la tabla con "Nombre" igual a "Spock" y "Navío" igual a "Kelvin" en la columna "Acciones"
Cálculo de agregados
Puede calcular y trabajar con valores agregados en columnas o especificar una condición que se validaría contra todos los valores de una columna. He aquí algunos ejemplos:
Orden de los valores
Para comprobar el orden de los valores contenidos en una fila o columna
verificar que la tabla "acciones" en la columna "Nombre" tenga los valores ordenados en orden ascendente
verificar que la tabla "acciones" en la columna "Nombre" tenga los valores ordenados en orden descendente
Número de valores (recuento)
Para comprobar el recuento de valores en una fila o columna
verificar que en en la columna "Nombre" de la tabla "acciones" la cantidad de valores sea mayor que 3
verificar que en la tercer columna de la tabla "acciones" la cantidad de valores sea menor que "20"
verifica que en la columna “Nombre” de la tabla "acciones" la cantidad de valores sea igual a 5
verifica que en la tercera columna de la tabla "acciones" la cantidad de valores sea igual al valor almacenado “conteoValorEsperado”
Suma de valores
Para comprobar la suma de valores de una fila o columna
verificar que en la columna "#" de la tabla "acciones" la suma de los valores sea mayor que "10"
verificar que en la primera columna de la tabla "acciones" la suma de los valores sea menor que "50"
verificar que en la columna "#" de la tabla "acciones" la suma de los valores sea igual a "15"
verificar que en la primera columna de la tabla "acciones" la suma de los valores sea inferior al valor almacenado "sumaValoresEsperados"
Media de valores
Para comprobar la media de los valores de una fila o columna
verificar que en la columna "#" de la tabla "acciones" el promedio de los valores sea mayor que "1"
verificar que en la primera columna de la tabla "acciones" el promedio de los valores sea menor que "6"
verificar que en la columna "#" de la tabla "acciones" el promedio de los valores sea igual a "3"
verificar que en la primera columna de la tabla "acciones" el promedio de los valores sea igual al valor almacenado "promedioValorEsperado"
Descripción general de JsonPath
testRigor utiliza JsonPath como una forma de ayudarle a hacer referencia a los elementos del JSON devuelto. Las expresiones JsonPath siempre hacen referencia a una estructura JSON de la misma manera que las expresiones XPath se utilizan en combinación con un documento XML. El "objeto raíz" en JsonPath siempre se denomina
$ independientemente de si se trata de un objeto o un array. Las expresiones JsonPath pueden utilizar la notación de puntos$.tienda.libro[0].título
o la notación entre corchetes
$['tienda']['libro'][0]['título']
Operadores
| Operador | Descripción |
|---|---|
$ |
El elemento raíz que se va a consultar. Aquí comienzan todas las expresiones de ruta. |
@ |
El nodo actual que está siendo procesado por un predicado de filtro. |
* |
Comodín. Disponible en cualquier lugar donde se requiera un nombre o un número. |
.. |
Escaneo profundo. Disponible en cualquier lugar donde se requiera un nombre. |
.<nombre> |
Elemento hijo con notación de punto. |
['<nombre>' (, '<nombre>')] |
Elemento hijo o hijos con notación de corchetes. |
[<número> (, <número>)] |
Índice o índices de array. |
[comienzo:final] |
Operador array slice. |
[?(<expresión>)] |
Expresión de filtro. La expresión debe evaluarse como un valor booleano. |
Funciones
Las funciones se pueden invocar al final de una ruta: la entrada a una función es la salida de la expresión de la ruta. La salida de la función viene determinada por la propia función.
| Función | Descripción | Salida |
|---|---|---|
min() |
Proporciona el valor mínimo de un array de números. | Doble |
max() |
Proporciona el valor máximo de un array de números. | Doble |
avg() |
Proporciona el valor promedio de un array de números. | Doble |
stddev() |
Proporciona el valor de la desviación estándar de un array de números. | Doble |
length() |
Proporciona la longitud de un array | Entero |
sum() |
Proporciona el valor de la suma de una matriz de números. | Doble |
Operadores de filtro
Los filtros son expresiones lógicas que se utilizan para filtrar arrays. Un filtro típico sería
[?(@.age > 18)] donde @ representa el elemento actual que se está procesando. Se pueden crear filtros más complejos con los operadores lógicos && y ||. Los literales de cadena deben estar entre comillas simples o dobles ( [?(@.color == 'blue')] or [?(@.color == "blue")] ).| Operador | Descripción |
|---|---|
== |
la izquierda es igual a la derecha (tenga en cuenta que 1 no es igual a “1”) |
!= |
la izquierda no es igual a la derecha |
< |
la izquierda es menor que la derecha |
<= |
la izquierda es menor o igual que la derecha |
> |
la izquierda es mayor que la derecha |
>= |
la izquierda es mayor o igual que la derecha |
=~ |
la izquierda coincide con la expresión regular [?(@.name =~ /foo.*?/i)] |
in |
la izquierda existe en la derecha [?(@.size in ['S', 'M'])] |
nin |
la izquierda no existe en la derecha |
subsetof |
la izquierda es un subconjunto de la derecha [?(@.sizes subsetof ['S', 'M', 'L'])] |
anyof |
la izquierda tiene una intersección con la derecha [?(@.sizes anyof ['M', 'L'])] |
noneof |
la izquierda no tiene una intersección con la derecha [?(@.sizes noneof ['M', 'L'])] |
size |
el tamaño de la izquierda (array o string) debe coincidir con el de la derecha. |
empty |
la izquierda (array o string) debería estar vacía |
Ejemplos de rutas
Dado el JSON
{
"tienda": {
"libro": [
{
"categoría": "referencia",
"autor": "Nigel Rees",
"título": "Sayings of the Century",
"precio": 8.95
},
{
"categoría": "ficción",
"autor": "Evelyn Waugh",
"título": "Espada de honor",
"precio": 12.99
},
{
"categoría": "ficción",
"autor": "Herman Melville",
"título": "Moby Dick",
"isbn": "0-553-21311-3",
"precio": 8.99
},
{
"categoría": "ficción",
"autor": "J. R. R. Tolkien",
"título": "El señor de los anillos",
"isbn": "0-395-19395-8",
"precio": 22.99
}
],
"bicicleta": {
"color": "rojo",
"precio": 19.95
}
},
"caro": 10
}
Se obtendrán los siguientes resultados:
| JsonPath | Resultado |
|---|---|
$.tienda.libro[*].autor |
Los autores de todos los libros |
$..autor |
Todos los autores |
$.tienda.* |
Todas las cosas, tanto libros como bicicletas |
$.tienda..precio |
El precio de todo |
$..libro[2] |
El tercer libro |
$..libro[-2] |
El penúltimo libro |
$..libro[0,1] |
Los primeros dos libros |
$..libro[:2] |
Todos los libros desde el índice 0 (incluido) hasta el índice 2 (excluido) |
$..libro[1:2] |
Todos los libros desde el índice 1 (incluido) hasta el índice 2 (excluido) |
$..libro[-2:] |
Los dos últimos libros |
$..libro[2:] |
Libro número dos de la cola |
$..libro[?(@.isbn)] |
Todos los libros con un número ISBN |
$.tienda.libro[?(@.precio < 10)] |
Todos los libros de la tienda que cuesten menos de 10 |
$..libro[?(@.precio <= $['caro'])] |
Todos los libros de la tienda que no sean “caros” |
$..libro[?(@.autor =~ /.*REES/i)] |
Todos los libros que coincidan con la expresión regular (sin distinción entre mayúsculas y minúsculas) |
$..* |
Deme todo |
$..libro.longitud() |
El número de libros |
Compatibilidad con la generación aleatoria de cadenas con expresiones regulares
Además de una forma sencilla de generar datos aleatorios, testRigor también admite el uso de expresiones regulares (Regex) para escenarios más complejos. Por ejemplo, puede generar una etiqueta aleatoria como esta:
generar valor desde plantilla de regex "<(a|button)>datos<\/\1>", luego ingresar en "Datos de etiqueta" y guardar como "etiquetaGenerada"
lo que genera
<a>datos</a> o <button>datos</button>. O quizás deseegenerar valor desde plantilla de regex "https://(www\.)?([a-z][a-z0-9-]{2,30}[a-z0-9]\.){1,5}(com|edu|co\.uk|info|io)", luego ingresar en "URL" y guardar como "urlGenerada"
lo que generará una URL única con el formato "https://www.abc.de.com".
La regla general para usar expresiones regulares es evitarlas en la medida de lo posible, ya que son muy difíciles de leer para cualquiera que no esté familiarizado con ellas. Pruebe siempre primero con una plantilla simple. Uno de los casos en los que podría verse obligado a utilizar regex es si lo que genera debe tener una longitud variable.
testRigor admite tanto la generación de cadenas aleatorias basadas en regex como la validación y extracción de datos.
Guía práctica para la generación aleatoria de datos con expresiones regulares
Para casos sencillos, como generar correos electrónicos, números de teléfono, números de tarjetas de crédito, etc., consulte la plantilla simple. El comando completo tendrá el siguiente aspecto:
generar valor desde regex "<TU_REGEX>", luego ingresar en "Email" y guardarlo como "emailNuevo"
| Regex | Caso de uso |
|---|---|
[A-Z][a-z]{2,50} |
Palabra aleatoria que empieza con mayúscula, como “Hola” |
[a-z]{2,50} |
Palabra aleatoria en minúsculas, como “hola" |
[1-2][0-9]{0,8} |
Número aleatorio |
((1[0-2])|0[1-9])-((0[1-9])|([1-2][0-8]))-((20[0-2][0-9])|(19[0-9]{2})) |
Fechas en formato mm-dd-yyyy |
((20[0-2][0-9])|(19[0-9]{2}))-((1[0-2])|0[1-9])-((0[1-9])|([1-2][0-8])) |
Fechas en formato yyyy-mm-dd |
((1[0-2])|(0[0-9])):([0-5][0-9]) [AP]M |
Hora en formato AM/PM 11:34 AM |
((2[0-3])|([0-1][0-9])):([0-5][0-9]) |
Hora en formato 24h 14:25 |
(www\.)?([a-z][a-z0-9-]{2,30}[a-z0-9]\.){1,5}[a-z]{2,3} |
Nombre de dominio |
https://(www\.)?([a-z][a-z0-9-]{2,30}[a-z0-9]\.){1,5}[a-z]{2,3} |
URL sin ruta |
https?://(www\.)?([a-z][a-z0-9-]{2,30}[a-z0-9]\.){1,5}[a-z]{2,3}(/[a-z0-9-]{2,10}){0,5}/?(#[a-z0-9])? |
URL completamente aleatoria |
((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?) |
IP v4 |
((\+[0-9][0-9]? [0-9]{3})|(\(0[0-9]{3}\))) [0-9]{3} [0-9]{4} |
Números de teléfono internacionales en formato estándar E.123 |
Compatibilidad con la sintaxis de generación aleatoria de expresiones regulares
testRigor ofrece compatibilidad total con expresiones regulares similares a Java con clases de caracteres POSIX y compatibilidad total con Unicode multibyte para caracteres internacionales. Un ejemplo sencillo es el siguiente:
generar desde regex "[A-Z][a-z]{2,50}", luego ingresar en "Nombre" y guardarlo como "nombreGenerado"
| Construcción | Descripción | Ejemplo |
|---|---|---|
Un texto |
Todo texto normal se copia tal cual. Esta parte no se puede modificar. En el ejemplo de la derecha, Lakshmi se publicará tal cual. | generar desde regex "Lakshmi", luego ingresar en "Nombre" y guardar como "nombre" |
| |
Selecciona una opción de entre varias. testRigor elegirá aleatoriamente entre las opciones disponibles. En el ejemplo de la derecha, utilizará Lakshmi o Meera. | generar desde regex "Lakshmi|Meera", luego ingresar en "Nombre" y guardar como "nombre" |
() |
Agrupación de partes. En caso de que sea necesario ejecutar algo en todo el conjunto en lugar del último símbolo. Lakshmi+ dará como resultado "Lakshmiiiiii", mientras que (Lakshmi )+dará como resultado “Lakshmi Laskhmi Lakshmi...” |
generar desde regex "(Lakshmi )+", luego ingresar en "Nombre" y guardar como "nombre" |
? |
Añade o no añade la parte aleatoriamente. El ejemplo daría como resultado "Lakshmi" aproximadamente el 50 % de las veces y una cadena vacía el otro 50 %. | generar desde regex "(Lakshmi)?", luego ingresar en "Nombre" y guardar como "nombre" |
+ |
Repite la parte al menos una vez y como máximo 100 veces. El ejemplo de la derecha tendrá al menos un Lakshmi, pero también puede tener hasta 99 más. | generar desde regex "(Lakshmi )+", luego ingresar en "Nombre" y guardar como "nombre" |
* |
Repite la parte al menos cero y como máximo 100 veces. El ejemplo de la derecha podría producir una cadena vacía o hasta 100 cadenas "Lakshmi". | generar desde regex "(Lakshmi )*", luego ingresar en "Nombre" y guardar como "nombre" |
{N} |
Repite la parte exactamente N veces. En el ejemplo de la derecha, "Lakshmi" se repetirá dos veces así: "Lakshmi Lakshmi". | generar desde regex "(Lakshmi ){2}", luego ingresar en "Nombre" y guardar como "nombre" |
{N,M} |
Repite la parte entre N y M veces. En el ejemplo de la derecha, "Lakshmi" se repetirá una o dos veces. | generar desde regex "(Lakshmi ){1,2}", luego ingresar en "Nombre" y guardar como "nombre" |
[abc] |
Selecciona solo uno de los caracteres especificados. En el ejemplo, solo se seleccionarán aleatoriamente a, b o c. | generar desde regex "[abc]", luego ingresar en "Nombre" y guardar como "nombre" |
[a-c] |
Selecciona solo uno de los caracteres del rango especificado. En el ejemplo, solo se seleccionarán aleatoriamente a, b o c. | generar desde regex "[a-c]", luego ingresar en "Nombre" y guardar como "nombre" |
[^abc] |
Si el primer símbolo entre corchetes es ^, testRigor utilizará los símbolos visibles excepto los proporcionados. En el ejemplo, podría ser cualquier carácter como 'A', '7', 'd', '&', etc. Esta inversión se aplica de forma universal y también se puede utilizar con rangos, como [^a-c], que en este caso tendrá el mismo efecto. |
generar desde regex "[^abc]", luego ingresar en "Nombre" y guardar como "nombre" |
\s |
Un carácter de cualquier espacio en blanco, como un espacio o una tabulación. | generar desde regex "\s", luego ingresar en "Nombre" y guardar como "nombre" |
\w |
Un carácter de letras latinas minúsculas y mayúsculas, dígitos y “_”. Equivalente a [a-zA-Z0-9_]. |
generar desde regex "\w", luego ingresar en "Nombre" y guardar como "nombre" |
\d |
Carácter de un dígito. Equivalente a [0-9]. |
generar desde regex "\d", luego ingresar en "Nombre" y guardar como "nombre" |
. |
Cualquier carácter. testRigor generará aleatoriamente caracteres que se pueden escribir en un teclado estadounidense. | generar desde regex "\d", luego ingresar en "Nombre" y guardar como "nombre" |
\ |
Escapa el siguiente carácter especial. Por ejemplo, si desea incluir “[” y “]” en el conjunto de caracteres que utiliza, puede especificar[\[\]] |
generar desde regex "[\[\]]", luego ingresar en "Nombre" y guardar como "nombre" |
\n |
Solo un carácter de nueva línea. | generar desde regex "\n", luego ingresar en "Nombre" y guardar como "nombre" |
\t |
Solo un carácter de tabulación. | generar desde regex "\t", luego ingresar en "Nombre" y guardar como "nombre" |
\N |
Una referencia al grupo N generado anteriormente. Por ejemplo, <(a|button)>datos<\/\1> generará la apertura y el cierre de la misma etiqueta (”a” o “button” en este caso). |
generar desde regex "<(a|button)>datos<\/\1>", luego ingresar en "Código" y guardar como "código" |
Temas avanzados
Cuando creamos el generador de regex, queríamos que la sintaxis se pareciera lo más posible, desde el punto de vista técnico, a la versión Java de regex (Pattern). Es posible que encuentre muchas peculiaridades y características adicionales similares a la versión de Java. Sin embargo, el analizador se creó desde cero y tenía que ser compatible con la generación, por lo que hay algunas diferencias. Por ejemplo, incluimos compatibilidad con casi todas las clases de caracteres POSIX. Sin embargo, emulamos el funcionamiento de Java con referencias inversas y numeración de grupos. Además, intentamos crear el analizador de manera que generara los mensajes de error lo más legibles y comprensibles posibles.
| Pregunta | Respuesta |
|---|---|
| ¿Cómo genera testRigor los valores aleatorios? | testRigor genera números aleatorios con una secuencia pseudoaleatoria inicializada en nanosegundos. |
¿Existe un límite para operaciones ilimitadas como *? |
Sí, el límite predeterminado es 100. |
| ¿Qué pasa si necesito generar más de 100 símbolos? | Puede utilizar el rango y especificar cualquier número como límite superior. testRigor repetirá hasta el número especificado o hasta 10 000, lo que sea menor. |
¿testRigor admite intersecciones como [a&&[b]]? |
Sí para la validación/búsqueda. Todavía no para la generación aleatoria de datos. |
| ¿testRigor admite símbolos Unicode de varios caracteres? | Sí, naturalmente, listo para usar. Puede especificar 😀{3} para obtener "😀😀😀" |
| ¿testRigor admite grupos sin captura? | Sí, para validación/búsqueda. Para la generación, los grupos positivos sin captura como (?<=grupo) generarán datos, pero los grupos negativos como (?!grupo) se ignorarán. |
¿testRigor admite indicadores como (?i)? |
Sí para la validación/búsqueda. Todavía no para la generación aleatoria de datos. |
Para casos de uso más sencillos, como números de teléfono, números de pasaporte, números de la seguridad social, correos electrónicos, etc., consulte la plantilla sencilla.
Expresiones regulares para validaciones y búsquedas
Puede utilizar regex para la búsqueda/validación en testRigor. testRigor utilizará el patrón regex de Java 11 para compilar/procesar el regex en este caso. Consulte aquí la sintaxis completa compatible. Ejemplos de uso:
verificar que la página contiene regex "Hora actual: [0-2][0-9]:[0-5][0-9]"
verificar que la página no contiene regex "fail|crash|500"
verificar que la URL coincide con la regex "https://mycompany\.com/list/item/[a-z0-9]{2,30}"
verificar que el texto debajo de "Hora actual" coincide con la regex "[0-2][0-9]:[0-5][0-9]"
obtener valor de regex "[0-2][0-9]:[0-5][0-9]" y guardarlo como "horaActual"
Cómo utilizar plantillas sencillas para generar datos únicos
testRigor le ofrece una forma de generar datos únicos fácilmente. Por ejemplo, puede generar datos únicos como números de teléfono de la siguiente manera:
generar valor desde plantilla "###-555-####", luego ingresar en "Teléfono" y guardarlo como "teléfonoGenerado"
Esto generaría un número de teléfono único como
752-555-0912. Para ello, testRigor utiliza cuatro símbolos diferentes para indicar los tipos de datos que se desean generar: #$%*.Símbolos generadores de datos únicos
| Símbolo | Descripción |
|---|---|
# |
Genera un número aleatorio entre 0-9. |
$ |
Genera una letra minúscula aleatoria entre a-z. |
% |
Genera una letra mayúscula aleatoria entre A-Z. |
* |
Genera un símbolo alfanumérico aleatorio, ya sea un número o una letra minúscula o mayúscula (0-9, a-z, A-Z). |
\ |
Si el símbolo siguiente es uno de los anteriores u otro \ entonces este símbolo \ se elimina y se devuelve el símbolo siguiente sin modificaciones, en lugar de generar un símbolo aleatorio. |
Ejemplos
Es importante recordar que testRigor ya tiene palabras integradas para generar correos electrónicos únicos o nombres únicos. No es necesario proporcionar una plantilla para ellos. Funcionarían de la siguiente manera:
generar email único, luego ingresar en "Email" y guardarlo como "emailNuevo"
generar nombre único, luego ingresar en "Nombre" y guardarlo como "nombreGenerado"
| Ejemplo | Descripción |
|---|---|
generar email único, luego ingresar en "Email" y guardarlo como "emailNuevo" |
Genera un correo electrónico aleatorio en dominio testrigor-mail.com. |
generar nombre único, luego ingresar en "Nombre" y guardarlo como "nombreGenerado" |
Genera un nombre aleatorio. |
generar valor desde plantilla "$******************************@testrigor-mail.com", luego ingresar en "Email" y guardarlo como "emailNuevo" |
Genera un correo electrónico aleatorio en un dominio personalizado. |
generar valor desde plantilla "###-###-####", luego ingresar en "Teléfono" y guardarlo como "teléfonoGenerado" |
Genera un número de teléfono aleatorio. |
generar valor desde plantilla "811-###-####", luego ingresar en "Teléfono" y guardarlo como "teléfonoGenerado" |
Genera un número de teléfono aleatorio con el código de área 811. |
generar valor desde plantilla "000-##-####", luego ingresar en "SSN" y guardarlo como "ssnGenerado" |
Genera un número de seguro social aleatorio. |
generar valor desde plantilla "4###-####-####-####", luego ingresar en "tarjeta" y guardarlo como "tarjetaGenerada" |
Genera una tarjeta de crédito VISA aleatoria. |
generar valor desde plantilla "https://$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.info", luego ingresar en "url" y guardarlo como "urlGenerado" |
Genera una URL aleatoria. |
generar valor desde plantilla "%******************************", luego ingresar en "datos" y guardarlo como "datosGenerados" |
Genera datos alfanuméricos aleatorios. |
generar valor desde plantilla con parámetros escapados "${nowDateTimeIso}-**********", luego ingresar en "Datos" y guardar como "datosGenerados |
Genera datos alfanuméricos aleatorios que comienzan con la fecha y hora en formato ISO. |
generar valor desde plantilla "%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.", luego ingresar en "descripción" y guardarlo como "descripciónGenerada" |
Genera una descripción de texto aleatoria. |
Los casos de uso más complejos pueden requerir en algunos casos el uso de regex, que se puede encontrar aquí.
Qué es la lógica booleana
La lógica booleana en el contexto de testRigor es una forma de combinar condiciones booleanas como
"Estado" contiene "Éxito". Puede utilizar tres operadores principales para combinar estas condiciones:- Y
- O
- NO
- Paréntesis ()
A continuación se muestran algunos ejemplos:
Operador Y
El operador Y ayuda a unir condiciones que deben ser verdaderas para que el resultado sea verdadero. Por ejemplo,
"Estado" contiene "Éxito" y "Ciudad" es igual a "París" solo será verdadero cuando la fila seleccionada contenga "Éxito" en la columna "Estado" y tenga la cadena "París" en la columna "Ciudad" al mismo tiempo.Operador O
El operador O ayuda a encontrar una fila que contenga una o ambas condiciones. Por ejemplo,
"Estado" contiene "Éxito" o "Ciudad" es igual a "París" solo será cierto cuando la fila seleccionada contenga “Éxito” en la columna “Estado” o tenga la cadena “París” en la columna “Ciudad”, o ambas cosas.Operador NO
El operador NO ayuda a calcular la negación de la condición. Por ejemplo,
no "Estado" contiene "Éxito" solo será verdadero cuando la fila seleccionada no contenga "Éxito" en la columna "Estado".Paréntesis ()
Los paréntesis () ayudan a agrupar condiciones. Por ejemplo,
("Estado" contiene "Éxito" o "Estado" contiene "En curso") y "Ciudad" es igual a "París" solo será cierto cuando la fila seleccionada contenga "Éxito" o "En curso" en la columna "Estado" y tenga la cadena "París" en la columna "Ciudad" al mismo tiempo. En este ejemplo, la columna “Estado” debe contener “Éxito” o “En curso”, y la columna “Ciudad” debe contener “París”.