Logo-Spanish

GR

 

 

 

QA AUTOMATION ENGINEER

 

Llenando un formulario usando un CSV en iMacros parte 2 (Loops)

En el post anterior, ya aprendimos como llamar a un documento CSV usando el comando

SET !DATASOURCE file.csv

 Y aprendimos que una vez "declarado" el documento, podemos extraer de él los datos de cada columna, llamando cada una de esas columnas de la forma

{{!COL#}}

 donde # es el numero de columna, usando esta variable en un TAG como por ejemplo:

TAG POS=1 TYPE=TAGTYPE ATTR=SOMEATTR:someattrvalue CONTENT={{!COL1}}

 Ahora, cuando hicimos esto en el post anterior, nos dimos cuenta, que al clickear en Ejecutar, solo llena la forma con los datos de la primer fila del documento CSV. Ahora aprenderemos como podemos llamar cada una de las filas del documento CSV, para crear un "bucle" o "loop" y así poder usar todo el documento para realizar la misma tarea una y otra vez.

 

Para hacer lo anterior lo que haremos es agregar dos líneas más a nuestro codigo.

SET !LOOP X
SET !DATASOURCE_LINE X

 Donde X puede ser igual a un numero o una variable. En nuestro ejemplo, usaremos ambos (un numero y una variable).

Cuando vayamos a usar nuestro test en "bucle" en vez de dar clic en el botón Ejecutar, primero estableceremos el numero de vueltas que nuestro test dará usando el campo Max: de nuestro iMacros

iMacros-Loop1

Y después haremos clic en el botón Ejecutar (bucle) del mismo.

!LOOP

Esta variable carga con el número de vuelta en la que va nuestro test, por tanto al recién iniciarlo, esta variable es igual a 1. Cuando nuestro test termina una vuelta inmediatamente al iniciar la segunda vuelta, el valor de esta variable es el valor anterior + 1. Por ejemplo

Al iniciar 

!LOOP =1

en la segunda vuelta 

!LOOP = 2

Sin embargo, nosotros podemos indicarle a nuestro test, desde que valor queremos iniciar, esto es útil cuando por ejemplo en nuestro CSV hay una fila con los títulos de los campos. Algo como el siguiente ejemplo 

Nombre, Apellido, Dirección, Ciudad, Estado, País, Código Posta, Telefono
Charles,Sexton,P.O. Box 701, 883 Tortor. Av.,Camaçari,Bahia,Lesotho,12345,640-890-8662 
Flynn,Green,P.O. Box 269, 2190 Amet, Road,St. Veit an der Glan,Kt,Albania,89234,936-182-5814 
Baker,Strickland,P.O. Box 464, 2785 Curabitur Av.,Tacoma,WA,Mali,18456,729-741-7444 
Beck,Adkins,9622 Aliquam Rd.,Ajaccio,Corse,Mauritius,09234,547-381-7344 
Nita,Turner,P.O. Box 161, 8181 Senectus St.,Middelburg,Zl,Niger,12584,872-429-6004 
Kiara,Bruce,P.O. Box 619, 4942 Risus. Ave,Leeuwarden,Friesland,Saint Pierre and Miquelon,23394,429-848-4599

 O cuando nuestro test se detuvo en la línea 50 y teníamos 100 pruebas por hacer con esta variable, podemos especificarle que empiece donde se detuvo y continué hasta el final, utilizando 

!LOOP 50 

y combinándolo con !DATASOURCE_LINE

!DATASOURCE_LINE

Esta variable nos permite establecer la línea a usar de nuestro archivo, toma valores numéricos y otras variables, por ejemplo la variable !LOOP  que tambien toma valores numéricos. Por ejemplo, en el CVS de ejemplo anterior si queremos usar la linea 3.

Flynn,Green,P.O. Box 269, 2190 Amet, Road,St. Veit an der Glan,Kt,Albania,89234,936-182-5814

Solo tenemos que escribir lo siguiente:

SET !DATASOURCE_LINE 3

Creando el Loop

En nuestro ejemplo anterior teníamos una forma que teníamos que llenar con datos como los que se muestran anteriormente, nuestro código hasta el momento era:

VERSION BUILD=8510617 RECORDER=FX
TAB T=1
SET !DATASOURCE ejemplo.csv
URL GOTO=https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/viewform
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.757433527 CONTENT={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.414022470 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.1960753282 CONTENT={{!COL3}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.549681952 CONTENT={{!COL4}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.436972228 CONTENT={{!COL5}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.1842450612 CONTENT={{!COL6}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.926019437 CONTENT={{!COL7}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.1850440789 CONTENT={{!COL8}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:submit

Si corremos eso con un Max: = 3 y haciendo clic en el botón Ejecutar (bucle) esto hará que tome los valores de la primer fila y los use las 3 veces para llenar nuestra forma. Si tenemos valores en nuestra primer fila, bien, esto no es tan malo. Sin embargo, si nuestra primer fila, como en el ejemplo de arriba, contiene títulos para cada columna, llenaría la forma con esos valores. Primero para evitar eso, agregaremos la siguiente línea.

VERSION BUILD=8510617 RECORDER=FX
TAB T=1
SET !DATASOURCE ejemplo.csv
SET !LOOP 2
URL GOTO=https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/viewform

Esta línea le dice a nuestro script "comienza con la vuelta 2" Si corremos así todo nuestro script con un Max: 3 esto hará que solo corra 2 vueltas la primera sería al iniciar cuando !LOOP sea igual a 2 y la segunda sería la siguiente, cuando !LOOP sea igual a 3. Sin embargo esto sólo haría que ambas vueltas las hiciera utilizando los datos de la primer fila de nuestro documento, para hacer que lo haga a través de nuestro documento incluiremos la siguiente línea.

VERSION BUILD=8510617 RECORDER=FX
TAB T=1
SET !DATASOURCE ejemplo.csv
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO=https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/viewform

Como vimos anteriormente con la variable !DATASOURCE_LINE le decimos a nuestro script que línea de nuestro documento queremos usar. Por lo tanto en este caso le estamos diciendo que tome el valor de la variable !LOOP. Entonces, al hacer esto y dado que en la línea inmediata anterior estamos asignandole el valor 2 a la variable !LOOP, la variable !DATASOURCE_LINE también obtendrá el valor de 2.

Ahora. Al correr este script con un Max: 3 tendremos lo siguiente:

Primera vuelta:

LOOP = 2 por lo tanto

DATASOURCE_LINE = 2

Aquí utilizará los valores de la segunda línea de nuestro documento, para llenar los campos de la forma (con el resto del código).

Segunda vuelta:

LOOP = 3 por lo tanto tambien 

DATASOURCE_LINE = 3

Aquí utilizará los valores dela tercer línea de nuestro documento. Así nuestro script quedaría completo.

VERSION BUILD=8510617 RECORDER=FX
TAB T=1
SET !DATASOURCE ejemplo.csv
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO=https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/viewform
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.757433527 CONTENT={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.414022470 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.1960753282 CONTENT={{!COL3}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.549681952 CONTENT={{!COL4}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.436972228 CONTENT={{!COL5}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.1842450612 CONTENT={{!COL6}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.926019437 CONTENT={{!COL7}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:entry.1850440789 CONTENT={{!COL8}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:https://docs.google.com/forms/d/1TeWc2RoeHyCX2DOAXBTzl_uYIS2QrBnfGosuN41d1Mw/formResponse ATTR=NAME:submit

Solo necesitamos asignar el valor del campo Max: el numero total de líneas en nuestro documento y correrlo con el botón Ejecutar (bucle)