Proceso de automatización utilizando Selenium

 

Embed or link this publication

Description

A continuación se explica el proceso de automatización utilizando las siguientes Herramientas: Selenium IDE. Selenium RC BlueDuck SRC. Java (Eclipse IDE). Excel

Popular Pages


p. 1



[close]

p. 2

automatización a continuación se explicara el proceso de automatización utilizando las siguientes herramientas · selenium ide · selenium rc · blueduck src · java eclipse ide · excel selenium ide es el plugin que viene para el navegador firefox y que nos permite automatizar acciones sobre el navegador haciendo una grabación de cada paso que realizamos selenium lo graba en lenguaje selenity pero se puede exportar a varios lenguajes entre ellos java que es el que utilizaremos -requisitos mozilla firefox instalado selenium ide instalado ejemplo de grabación de una prueba sobre el navegador abrimos el navegador firefox y luego abrimos selenium ide una vez que abre esta listo para comenzar a grabar las acciones sobre el navegador en este caso se realizara una búsqueda en google y se navegara en las páginas que van derivando de la búsqueda.

[close]

p. 3

en la imagen se pueden en los distintos pasos los comandos que se van completando automáticamente una vez que terminamos de grabar presionando el botón con el circulo de color rojo podemos ejecutar el test con el botón con el símbolo verde play también manejar la velocidad de ejecución con el control deslizante de la izquierda.

[close]

p. 4

una vez que terminamos la grabación se puede guardar el archivo de selenium este se guardara como un html por defecto también se puede exportar a cualquier lenguaje de los disponibles entre se utilizara java para ello nos dirigimos a archivo ò file exportar test case como ò export test case as junit 4remote control una vez allí guardamos nuestro test case con la extensión .java ejemplo.java luego de esto podremos abrir este archivo con notepad o con algún ide de java para editarlo.

[close]

p. 5

cuando se exporta a java el código se transforma y comienza a utilizar sentencia y lenguaje propiamente de java también utiliza librerías y drivers de selenium y librerías de junit 4 con las anotations que se utilizan para correr los test ej @test @after @before a continuación se muestra el código que obtuvimos al exportar el test case con selenium package com.example.tests import com.thoughtworks.selenium import org.junit.after import org.junit.before import org.junit.test import java.util.regex.pattern public class ejemplo1 extends selenesetestcase @before public void setup throws exception selenium new defaultselenium localhost 4444 firefox http www.google.com.ar selenium.start @test public void testejemplo1 throws exception selenium.open http www.google.com.ar assertequals google selenium.gettitle selenium.type id=gbqfq casa selenium.click id=gbqfb selenium.click link=casa wikipedia la enciclopedia libre selenium.waitforpagetoload 30000 assertequals casa wikipedia la enciclopedia libre selenium.gettitle selenium.click css=div.thumb.tnone div.thumbinner a.image img.thumbimage selenium.waitforpagetoload 30000 assertequals file:parkwayhousesseacroft.jpg wikimedia commons selenium.gettitle selenium.click link=1.024 × 318 píxeles selenium.waitforpagetoload 30000 @after public void teardown throws exception selenium.stop }

[close]

p. 6

utilización de selenium rc para la poder correr un test que esta escrito en java se necesitara tener corriendo una instancia de selenium remote control para ello tenemos tres opciones por las cuales optar la primera opción es correr el selenium rc desde la consola con el servicio de ant como esta explicado en el manual de selenium la segunda opción es utilizar un plugin de eclipse ide que permite levantar de manera automática una instancia de selenium grid y de selenium rc esta opción se explicara mas adelante por ultimo la opción con la cual se realizo el ejemplo que estamos desarrollando es una aplicación llamada blueduck src que se instala y al ejecutarlo levanta una instancia de selenium rc cuando lo ejecutamos queda en la barra de herramientas minimizado el icono del programa y desde allí podemos ingresar al log a las configuraciones o bien controlar el servidor las funciones que podemos manejar desde aquí comprenden start y stop del src cuando iniciamos o detenemos el server se presenta un cartel en la pantalla hincando la situación:

[close]

p. 7

proyecto en eclipse ide para desarrollar el ejemplo se opto por la ide eclipse para desarrollar el caso de prueba en java los requerimientos son los siguientes librerías y drivers selenium-remote.control-1.0.1 este paquete trae todas las librerías y drivers necesarios para el manejo de selenium con los distintos lenguajes para java el que se utilizara será selenium-java-client-driver-1.0.1 -xlsql_y7 esta librería permite el manejo lectura y escritura del archivo excel -junit 4 esta librería permite la ejecución de los test y la utilización de anotations tales como @runwith @test @parametrized que se iran explicando a medida que se muestre el código -jre 1.6 en nuestro ejemplo estamos utilizando esta versión -origen de datos odbc xls esto se configura en windows para comenzar debemos crear un nuevo proyecto e incluir todas las librerías y drivers mencionados desde java y usando el driver ojdb podemos acceder a un fichero excel como si fuera una base de datos de forma que podremos leer su contenido o escribir en él configurar la fuente de datos lo primero que tenemos que hacer en windows es configurar el fichero excel como si fuera una fuente de datos nos dirigimos a inicio panel de control herramientas de administrativas:

[close]

p. 8

luego entramos en donde dice orígenes de datos

[close]

p. 9

una vez allí vamos a crear un nuevo origen de datos clic en agregar en la pantalla que aparece buscamos en la lista driver do microsoft excel xls lo seleccionamos y pulsamos finalizar en la siguiente pantalla que aparece ponemos el nombre que queremos para identificar el origen de datos y luego en el botón seleccionar libro buscamos el archivo excel que vamos a utilizar.

[close]

p. 10

una vez realizado esto desde eclipse y con el driver para excel incorporado a nuestro proyecto podremos conectarnos al excel como si fuese una base de datos código java simplemente debemos abrir la conexión como si fuera una base de datos normal usando el driver sun.jdbc.odbc.jdbcodbcdriver el código puede ser como este class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager.getconnection jdbc:odbc excel donde excel es el nombre que elegimos para la fuente de datos cuando la configuramos en el paso anterior a partir de aquí el código es el normal para acceso a cualquier base de datos usando los statement y resultset podemos leer o insertar si al configurar en la fuente de datos desmarcamos el check de sólo lectura tablas en un excel se considera que cada una de las hojas dentro del fichero excel es una tabla las columnas de la tabla serán los nombres que aparecen en la primera fila no las letras a,b,c

[close]

p. 11

así por ejemplo el siguiente trozo de código java try class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager .getconnection jdbc:odbc:un_excel statement st conexion.createstatement st.execute create table kk2 id number nombre text precio number st.execute insert into kk2 id,nombre,precio values 1 hola 12.52 conexion.close catch exception e e.printstacktrace dará como resultado la siguiente hoja de excel nombre de las tablas si el fichero excel se ha creado con la aplicación excel en vez de con nuestra aplicación java desde java veremos los nombres de las hojas de las tablas con un detrás por ejemplo si el excel tiene una pestaña etiquetada nov2004 desde java la veremos como nov2004 la forma de acceder a ellos con una sql sin que nos de error por el carácter es poniendo el nombre de la tabla con el y todo ello entre corchetes así [nov2004 resultset rs st.executequery select from [nov2004 si la tabla la hemos creado nosotros con un create table no es necesario este al consultarla catálogos los catálogos que considera la base de datos son los ficheros excel.

[close]

p. 12

cuando abrimos nuestra fuente de datos que apunta a un fichero excel el catálogo que estamos usando es ese fichero excel sin embargo tendremos como catálogos accesibles todos los ficheros excel que haya en el mismo directorio del fichero excel que hemos elegido y si cambiamos de catálogo y ponemos uno que no existe estaremos creando un fichero excel nuevo en ese directorio class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager.getconnection jdbc:odbc:un_excel conexion.setcatalog nuevocatalogo ese trozo de código utilizará el fichero nuevocatalogo.xls independientemente del fichero que hayamos indicado en la fuente de datos un_excel si ese fichero nuevocatalogo.xls existe será el que se use si no existe lo creará debemos nosotros desde java crear las tablas correspondientes y las columnas para cada una de ellas luego de que exportamos el código desde selenium a java y tenemos nuestro nuevo proyecto en eclipse incorporaremos la clase java que se genero cuando exportamos y le haremos las modificaciones pertinentes para hacer la ejecución que necesitamos en este caso se eliminaron las anotaciones @after @before ya que para correr la prueba varias veces utilizamos las anotaciones @runwith @parameters y @test para que nuestro test lea datos desde el excel y valla corriendo el mismo test cambiando los datos a continuación ponemos el código de la clase java como quedo modificada package clases import java.util.arraylist import java.util.collection import import import import org.junit.test org.junit.runner.runwith org.junit.runners.parameterized org.junit.runners.parameterized.parameters import com.thoughtworks.selenium.defaultselenium import com.thoughtworks.selenium.selenesetestcase con este comando se indica que la clase utilizara parametros @runwithparameterized.class public class googleselenium2 extends selenesetestcase private final integer num 1 public googleselenium2final integer x this.num x @parameters se crea un array que contendra los datos para ejecutar la prueba public static collection

[close]

p. 13

public void coretestint i throws exception clase2 cl2 new clase2 el metodo que utilizamos aqui lee el dato del indice del registro indicado string a cl2.datosi string c1 string error aqui se comienza a utilizar el lenguaje y comandos de selenium try selenium.open http www.google.com.ar selenium.type id=gbqfq c1 a c1 selenium.click id=gbqfb assertequals google selenium.gettitle system.out.println busqueda a estos métodos escriben el estado y detalle del test ejecutado en el excel cl2.escribirestadooka i cl2.escribirdetalleok no hay errores a i catcherror e error e.getmessage system.out.printlne cl2.escribirestadonooka,i cl2.escribirdetalleokerror a i este metodo toma el mensaje de error y lo agrega en el excel @test public void testgoogleselenium2 throws exception selenium new defaultselenium localhost 4444 chrome http www.google.com.ar selenium.start coretestthis.num selenium.stop }

[close]

p. 14

package clases a continuación el código de la import java.sql.connection;clase auxiliar clase2.java de acceso al archivo excel la escritura de datos y lectura import java.sql.drivermanager import java.sql.resultset import java.sql.statement public class clase2 en la cual se escribieron los métodos public int numregs string r null try class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager.getconnection jdbc:odbc:excel statement st conexion.createstatement resultset rs st.executequery select countdatos from [datos1 while rs.next r rs.getobject1 tostring catch exception e system.out.println algun error en algun sitio return integer.parseintr public string datosint i string dato try class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager.getconnection jdbc:odbc:excel statement st conexion.createstatement resultset rs st.executequery select datos from [datos1 where indice i while rs.next dato rs.getobject1 tostring system.out.printlndato i conexion.close catch exception e system.out.println no hay datos para la busqueda return dato }

[close]

p. 15

public void escribirestadookstring a int i try class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager .getconnection jdbc:odbc:excel statement st conexion.createstatement st.execute update [datos1 set and indice +i estado ok where datos a conexion.close catch exception e e.printstacktrace public void escribirestadonookstring a int i try class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager .getconnection jdbc:odbc:excel statement st conexion.createstatement st.execute update [datos1 set and indice +i estado no ok where datos a conexion.close catch exception e e.printstacktrace public void escribirdetalleokstring er,string a int i try class.forname sun.jdbc.odbc.jdbcodbcdriver connection conexion drivermanager.getconnection jdbc:odbc:excel statement st conexion.createstatement st.execute update [datos1 set detalle er where datos a and indice +i conexion.close catch exception e e.printstacktrace }

[close]

Comments

no comments yet